Ajax加载后更新监听器的最佳实践

时间:2013-11-10 00:59:19

标签: javascript jquery

将新内容加载到页面后,更新我的Javascript事件侦听器的最佳方法是什么?我意识到如果我在将数据加载到Feed之前添加了它,我的点击监听器就无法正常工作。为了解决这个问题,我把它放在我的ajax调用的.done回调中。

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

如果我将更多数据加载到同一个Feed中,则会将click侦听器再次添加到之前存在的.likebutton的所有实例中。这意味着有时我的函数被调用2次甚至3次,具体取决于我加载新数据的次数。

我知道我可以删除所有对象的侦听器,然后每次添加一个新的,但我不确定这是否是最好的做法。

连连呢?

1 个答案:

答案 0 :(得分:7)

假设您始终在特定元素中加载新内容,例如ID为content的div,则可以使用on方法将click事件委派给此元素。

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

示例:http://jsfiddle.net/nxpgp/(请注意,每个新的.likebutton都会响应点击事件)