2013-11-10 34 views
0

將新內容加載到頁面後,更新Javascript事件監聽器的最佳方式是什麼?我意識到我的點擊監聽器不工作,如果我在將數據加載到我的提要之前添加它。要解決這個問題,我把它放在我的ajax調用的.done回調中。Ajax加載後更新監聽器的最佳實踐

$(".likebutton").click(function(){ 
    //function 
}); 

如果我加載更多的數據爲點擊監聽器被再次加入到在那裏之前.likebutton的所有實例相同的飼料。這意味着我的函數有時會被調用2次甚至3次,這取決於我加載新數據的次數。

我知道我可以刪除所有對象的偵聽器,然後每次都添加一個偵聽器,但我不確定這是否是最佳實踐。

對此提出建議?

回答

7

假設您總是在特定元素(如ID爲content的div)中加載新內容,則可以使用on方法將click事件委託給此元素。

$('#content').on('click', '.likebutton', function() { 
    // your code 
}); 

例子:http://jsfiddle.net/nxpgp/(請注意,每一個新的.likebutton將響應click事件)

+0

WOW!我從未在任何地方見過。非常好的把戲Guilherme。我想我會用這個。 – centreee