jQuery On事件Off自动取消绑定

时间:2013-11-01 13:54:44

标签: javascript jquery events bind jquery-on

有没有办法自动取消绑定在元素上设置的所有“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(){ }); - >没用。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

JSFiddle

答案 1 :(得分:1)

您可以在没有参数的情况下调用.unbind()来执行此操作:

$('li').unbind();

来自the docs

  

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

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

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

$('li').off();

或针对特定处理程序:

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

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

答案 2 :(得分: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