当我在动态页面中使用jquery live
函数(通过Ajax显示页面)时,使用live
检测到的按钮事件是重复的。并且,每次访问包含这些按钮的页面时,只需单击一次就会导致函数执行多次。
我如何解决这个问题? 谢谢你!
答案 0 :(得分:1)
这意味着您已多次将同一个处理程序附加到同一事件。
如果没有代码,则无法提供进一步的帮助,但我相信您现在知道如何自行修复: - )
答案 1 :(得分:0)
我建议您使用.on()
和.off()
,因为.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的约束时间。