当我在动态页面中使用 jQuerylive
函数时(页面通过 Ajax 显示),使用 检测到的按钮事件live
是重复的。而且,每次我访问包含这些按钮的页面时,单击都会导致功能执行多次。
我该如何解决这个问题?
当我在动态页面中使用 jQuerylive
函数时(页面通过 Ajax 显示),使用 检测到的按钮事件live
是重复的。而且,每次我访问包含这些按钮的页面时,单击都会导致功能执行多次。
我该如何解决这个问题?
这意味着您已多次将同一处理程序附加到同一事件。
如果没有代码,就不可能提供进一步的帮助,但我相信你现在知道如何自己修复它了 :-)
live()
您可能(不经意间)在同一个元素上多次重新绑定事件(例如,绑定实时事件的代码重复了多次)。尝试使用one()
;这只会绑定一次,如果完全相同的事件已经绑定到元素,则不会重新绑定。
示例用法:
$("#foo").one("click", function() {
//event on click, bind this just once, even if this block of code is repeated
});
假设您使用 将事件绑定到链接单击one()
,它只会在每次单击时执行(并继续执行)该操作,但会阻止它在每次单击时触发 xxx 次(xxx 是它被绑定的时间)。
我建议您使用.on()
并且.off()
已经.live()
被弃用并显示了很多问题
你可以做的是.off()
在绑定.on()
到元素之前设置,这样我们就可以确保所有以前的事件处理程序都被删除。
由于您没有提供任何代码,我只是猜测您的问题是什么。
我认为在每个 ajax 响应中,DOM 都会随着.live()
再次调用的代码而改变,以监听新注入的 DOM 的事件。现在从我之前所说的开始.on()
,并且.off()
已经开始救援了。调用.off()
以确保删除所有现有的事件处理程序,然后通过以下方式重新创建所有事件侦听器.on()