如何使用jquery取消绑定所有事件

时间:2010-08-25 19:13:08

标签: jquery events unbind

我可以使用此代码删除点击事件,

$('p').unbind('click')

但是,有一些方法可以删除所有事件吗?

在jquery中有一个名为unbindAll的方法?

感谢

4 个答案:

答案 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();