我可以使用此代码删除点击事件,
$('p').unbind('click')
但是,有一些方法可以删除所有事件吗?
在jquery中有一个名为unbindAll
的方法?
感谢
答案 0 :(得分:89)
您可以在没有参数的情况下调用.unbind()
来执行此操作:
$('p').unbind();
来自the docs:
在最简单的情况下,如果没有参数,
.unbind()
将删除附加到元素的所有处理程序。
答案 1 :(得分:80)
从jQuery 1.7开始,off()
和on()
是绑定和取消绑定事件处理程序的首选方法。
因此,要从元素中删除所有处理程序,请使用:
$('p').off();
或针对特定处理程序:
$('p').off('click hover');
要添加或绑定事件处理程序,您可以使用
$('p').on('click hover', function(e){
console.log('click or hover!');
});
答案 2 :(得分:1)
@jammypeach是正确的&不是公认的使用方法。 Unbind有时最终会产生奇怪的行为(例如,实际上并没有正确地解除绑定事件)。
要取消绑定正文中的所有元素,找到所有元素并为每个元素关闭点击处理程序(旧的解除绑定):
$("body").find("*").each(function() {
$(this).off("click");
});
另请参阅如何在this stack overflow question中保存已关闭的事件。
答案 3 :(得分:1)
要从包括文档在内的所有元素中删除所有事件绑定,请使用:
$(document).off().find("*").off();