【问题标题】:Is there a way to remove all namespaced binds in jQuery?有没有办法删除 jQuery 中的所有命名空间绑定?
【发布时间】:2011-02-01 22:56:03
【问题描述】:

我有一些简单的代码,例如:

$('#modal-buttons [href*=close]').bind('click.modalClose',function(){
  app().modal('close')
});

但是假设我不知道 click.modalClose 将被绑定的任何地方,有没有办法销毁所有这些特定绑定,无论元素是什么,而不必执行以下操作?

$('#modal-buttons [href*=close],.someOtherelement,#onemore,.another').unbind('click.modalClose');

【问题讨论】:

    标签: javascript jquery events bind jquery-events


    【解决方案1】:

    要摆脱 所有 绑定,只需执行以下操作:

    $('*').unbind('click.modalClose');
    

    这会得到所有的。或者,您可以确保绑定始终通过您自己的 API 进行,然后您可以跟踪实际受影响的元素。 (但是,如果您要将处理程序与它们绑定的所有元素解除绑定,我看不到重点,除非您的页面具有史诗般的比例并且 $('*') 事情花费的时间太长。)

    【讨论】:

    • 不,我只是想找到一个不错的 DRY 解决方案,我想到了$('*'),但认为这可能是一项繁重的任务,但话又说回来,它只是解除绑定事件,没有动画或任何东西。
    • 所有浏览器(甚至是古董浏览器)都支持getElementsByTagName("*"),所以真正担心的应该是您的页面大小的函数。如果它们不是超级大,那么解绑可能不会花费很多时间。
    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2019-07-12
    • 2020-08-30
    相关资源
    最近更新 更多