1

有没有办法自动取消绑定在元素上设置的所有“on”事件?我找到了一个解决方案,但我不知道它是否正确。

$(document).off('click', 'li').on('click', 'li', function(e){
    e.preventDefault();
    // some stuff goes here
});

编辑:

我已经尝试了所有建议的答案,但没有一个能如我所愿。也许我没有提供足够的信息是我的错误:关键是我的所有内容都是动态加载的,就像在标签中一样,有些标签可以加载更多时间。

我试过这个 $('li').off().on('click', function(){ }); -> 没用

也试过这个 $('li').unbind().on('click', function(){ }); -> 没用。

4

3 回答 3

1

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

$('li').unbind();

文档

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

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

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

$('li').off();

或对于特定的处理程序:

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

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

于 2013-11-01T13:59:34.237 回答
1

您可以只使用unbind()off()删除对象中的所有事件处理程序。

$('#myNode').unbind();

off()是在 jQuery 1.7+ 中执行此操作的首选方法(@ Krishna指出)。

$('#myNode').off();

JSFiddle

于 2013-11-01T13:56:49.193 回答
1
$('li').off();//Remove all event handlers from all li elements:
$('li').off('click');//Remove specific event - click

从文档.off()

.off() 方法删除了使用 .on() 附加的事件处理程序。

.unbind()文档中,

从 jQuery 1.7 开始,首选 .on() 和 .off() 方法来附加和删除元素上的事件处理程序。

$('li').unbind(); //removes all event handlers
$('li').unbind('click');//removes specific event - click
于 2013-11-01T14:00:44.353 回答