如何解除所有使用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的事件。

Interesting Posts