77

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

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

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

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

谢谢

4

4 回答 4

105

您可以.unbind()不带参数调用来执行此操作:

$('p').unbind();

文档

在最简单的情况下,不带参数,.unbind()删除所有附加到元素的处理程序。

于 2010-08-25T19:14:47.260 回答
84

从 jQuery 1.7 开始,它是绑定off()on()取消绑定事件处理程序的首选方法。

因此,要从元素中删除所有处理程序,请使用以下命令:

$('p').off();

或对于特定的处理程序:

$('p').off('click hover');

要添加或绑定事件处理程序,您可以使用

$('p').on('click hover', function(e){
    console.log('click or hover!');
});
于 2012-08-21T11:28:16.700 回答
2

@jammypeach 关于 on & off 是公认的使用方法是正确的。解除绑定有时最终会产生奇怪的行为(例如,实际上没有正确解除绑定事件)。

要取消绑定正文中的所有元素,请找到所有元素并为每个元素关闭单击处理程序(旧的取消绑定是什么):

$("body").find("*").each(function() {
    $(this).off("click");
});

另请参阅如何保存您在此堆栈溢出问题中关闭的事件。

于 2017-01-31T17:43:44.350 回答
1

要从包括文档在内的所有元素中删除所有事件绑定,请使用:

$(document).off().find("*").off();
于 2020-10-23T13:03:31.740 回答