2015-04-12 22 views
1

我向其他元素添加div元素。 添加div,項目圖像顯示。在第一個片段中刪除預先標記的

第二個片段從項目div中刪除一個項目。 也沒有問題。

/* add item */ 
$('.add-to-session').on('click', function() { 
    var this_obj = $(this); 
    var data_cl_item = $(this).data('cl-item'); 
    var data = { 
     'action': 'add_to_session', 
     'item': data_cl_item 
    } 
    $.post(ajaxurl, data, function(response) { 
     if(response != "") { 
      $('.no-items').hide();    
      $('.session-items').prepend(response); 
     } 
    }); 
}); 

/* remove item */ 
$('.session-item-image').on('click', function() { 
    var this_obj = $(this); 
    var item_id = $(this_obj).data('delete'); 
    var data = { 
     'action': 'delete_from_session', 
     'item_id': item_id 
    } 
    $.post(ajaxurl, data, function(response) {   
     if(response == "200") {    
      $('.cl-session-item-'+item_id).remove(); 
     } 
    }); 
}); 

問題: 我不能除去新鮮添加的項目沒有頁面重載。

任何人都可以幫忙嗎?

回答

0

這裏的動態元素只是.click()$(".Element").on("click",function(){})不會工作。

使用

$(document).on('click', '.YourElementClassWhichWillBeClicked',     
function() { 
    //Your code 
}); 

爲什麼? 因爲當你編寫時,DOM,HTML首先被渲染時,元素可能不存在。

你有很多元素可以在某些事件上呈現等等。所以這些是HTML中動態創建的元素,當DOM被加載時不在那裏。

現在看到,每次單擊任何位置時,首先單擊document,因此,代表通過在Runtime上找到它,動態生成事件並將其附加到該元素。因此,代表是根據您的問題解決動態元素的方法。

問題是您將on()事件附加到動態添加的元素。你應該在你的情況下使用代表

+0

非常感謝:o) – coocser

+0

不客氣! –