将新内容加载到页面后,更新我的Javascript事件侦听器的最佳方法是什么?我意识到如果我在将数据加载到Feed之前添加了它,我的点击监听器就无法正常工作。为了解决这个问题,我把它放在我的ajax调用的.done回调中。
$(".likebutton").click(function(){
//function
});
如果我将更多数据加载到同一个Feed中,则会将click侦听器再次添加到之前存在的.likebutton的所有实例中。这意味着有时我的函数被调用2次甚至3次,具体取决于我加载新数据的次数。
我知道我可以删除所有对象的侦听器,然后每次添加一个新的,但我不确定这是否是最好的做法。
连连呢?
答案 0 :(得分:7)
假设您始终在特定元素中加载新内容,例如ID为content
的div,则可以使用on
方法将click事件委派给此元素。
$('#content').on('click', '.likebutton', function() {
// your code
});
示例:http://jsfiddle.net/nxpgp/(请注意,每个新的.likebutton
都会响应点击事件)