如何解除所有使用jQuery的事件
我可以使用此代码删除点击事件,
$('p').unbind('click')
但是,有一些方法来删除所有事件?
在jQuery中有一个名为unbindAll
的方法?
谢谢
你可以调用没有参数的.unbind()
来做到这一点:
$('p').unbind();
从文档 :
在最简单的情况下,没有参数,
.unbind()
删除附加到元素的所有处理程序。
从jQuery 1.7开始, off()
和on()
是绑定和解除绑定事件处理程序的首选方法。
所以要从一个元素中删除所有的处理器,使用这个:
$('p').off();
或为特定的处理程序:
$('p').off('click hover');
要添加或绑定事件处理程序,可以使用
$('p').on('click hover', function(e){ console.log('click or hover!'); });
@jammypeach是正确的closures和使用被接受的方法。 解绑定有时最终会造成奇怪的行为(例如,实际上不能正确解绑定事件)。
为了解除绑定的所有元素,find它们,并为每一个closures点击处理程序(什么是旧的解除绑定):
$("body").find("*").each(function() { $(this).off("click"); });
另请参阅如何保存在此堆栈溢出问题中closures的事件。