Jquery Live,多次执行函数

时间:2012-09-18 07:08:10

标签: jquery

当我在动态页面中使用jquery live函数(通过Ajax显示页面)时,使用live检测到的按钮事件是重复的。并且,每次访问包含这些按钮的页面时,只需单击一次就会导致函数执行多次。

我如何解决这个问题? 谢谢你!

3 个答案:

答案 0 :(得分:1)

这意味着您已多次将同一个处理程序附加到同一事件。

如果没有代码,则无法提供进一步的帮助,但我相信您现在知道如何自行修复: - )

答案 1 :(得分:0)

我建议您使用.on().off(),因为.live()已被弃用并显示了很多问题

http://api.jquery.com/on/

http://api.jquery.com/off/

http://api.jquery.com/live/

你可以做的是在将.off()绑定到元素之前设置.on(),这样我们就可以确保删除所有以前的事件处理程序。

由于您没有提供任何代码,我只是猜到了您的问题。

我认为在每个ajax响应中,DOM都会再次调用.live()的代码来监听新注入的DOM的事件。现在从我之前所说的.on().off()已经开始拯救了。调用.off()以确保删除所有现有事件处理程序,然后按.on()

重新创建所有事件侦听器

答案 2 :(得分:0)

您可能(无意中)在同一元素上多次重新绑定live()事件(例如,绑定直播事件的代码会重复多次)。尝试使用one();这将只绑定一次,如果完全相同的事件已绑定到元素,则不会重新绑定。

使用示例:

$("#foo").one("click", function() {
    //event on click, bind this just once, even if this block of code is repeated
});

假设您使用one()将事件绑定到链接点击,它只会执行(并且保持执行)每次点击的操作,但阻止它触发xxx次(每次点击都是xxx的约束时间。