2012-10-28 21 views
1

我有一個頁面,我建立訂單。該頁面與ajax完全兼容,可以查找產品並將其添加到頁面中。刪除由AJAX添加的HTML

現在,如果你添加一個項目,需要將其刪除,我是建設功能,可以這樣做:

$('.orderRemove').click(function() { 
    var removeID = $(this).attr("id"); 
    $("#item-" + removeID).remove(); 
    calculateTotal(); 
}); 

但由於.orderRemove由AJAX添加這是行不通的。

我該如何去做這個確切的調用工作,刪除由ajax添加的完整塊。

謝謝

+1

嘗試'$( 'orderRemove')。在( 「點擊」,()的函數,而不是'那 – mplungjan

+0

也不能工作。 –

+0

然後嘗試'「(」body「)。on(」click「,」.orderRemove「,function(){' – mplungjan

回答

5

原因是動態添加HTML到DOM本身不重視的事件處理程序,從而無論是在重新連接的事件處理程序阿賈克斯成功回撥或嘗試.delegate如果你正在使用jQuery版本低於1.7.on如果你正在使用jQuery 1.7或更高版本

$(document).delegate('.orderRemove','click',function() { 
    var removeID = $(this).attr("id"); 
    $("#item-" + removeID).remove(); 
    calculateTotal(); 
}); 

例如用。對

$(document).on('click','.orderRemove',function() { 
    var removeID = $(this).attr("id"); 
    $("#item-" + removeID).remove(); 
    calculateTotal(); 
}); 
+1

棄用.on – mplungjan

+0

這是迄今爲止唯一的答案, 非常感謝! –

+0

與整個文檔相比,綁定到更具體的元素會更有效率,因爲綁定將在任何地方處理_all_點擊;一般來說,OP想要綁定到其內容通過AJAX填充的實際元素。 – lanzz

2

你必須使用on這樣

$(document).on('click','.orderRemove',function() { 
    var removeID = $(this).attr("id"); 
    $("#item-" + removeID).remove(); 
    calculateTotal(); 
});