2015-04-18 141 views
0

我使用了jsfiddle中的一些現有代碼,但它使用了不推薦的.live函數。當我更改代碼以使用.on時,它不再有效。這裏是jsfiddle:http://jsfiddle.net/DBfKz/用.on代替已棄用的.live

該腳本將項目添加到「比較列表」。我想要做的是點擊旁邊的「x」,從列表中刪除。

這是過時代碼:

$(".box a").live("click", function() { 
    $(this).parent().remove(); 
    updateLinkAndCounter(); 
}); 

我將其轉換爲這樣的:

$(".box").on("click","a", function() { 
    $(this).parent().remove(); 
    updateLinkAndCounter(); 
}); 

我改變的jQuery的版本較新的東西,它支持。對

但現在該腳本不起作用。我在成功之前使用過。我只是不知道爲什麼它不在這裏工作。感謝您的幫助!

回答

0

問題在於,在dom準備好後創建了元素.box,因此元素不存在以便將事件附加到該元素。

您需要將事件處理程序添加到已存在的元素。

http://jsfiddle.net/DBfKz/72/

我改變你的活動,如下所示:

$("#container").on("click", '.box a', function(e) { 
    $(e.target).parent().remove(); 
    updateLinkAndCounter(); 
}); 

也改變了你的jQuery的版本1.4.4,從1.8.3到

它現在以同樣的方式。

+0

非常感謝!我幾個小時對此感到沮喪,解決方案非常簡單。 –

相關問題