Javascript 如何有效地从所有DOM元素中按名称空间删除事件侦听器?
我知道我可以这样做:Javascript 如何有效地从所有DOM元素中按名称空间删除事件侦听器?,javascript,jquery,Javascript,Jquery,我知道我可以这样做:$('*').off('.namespace') 但是我觉得*不是一个好主意,因为jQuery将遍历整个DOM树,这将非常缓慢 jQuerys internal$.cache包含有关通过.on() 是否有任何方法可以告诉jQuery只需遍历该内部缓存,并从任何元素的特定命名空间中删除所有事件侦听器,而无需*DOM树 编辑:问题是我不知道侦听器绑定到了哪些元素-我只知道它们绑定到的名称空间。为什么不在绑定事件时在每个元素上设置一个钩子呢 $('.some_el').addCla
$('*').off('.namespace')代码>
但是我觉得*
不是一个好主意,因为jQuery将遍历整个DOM树,这将非常缓慢
jQuerys internal$.cache
包含有关通过.on()
是否有任何方法可以告诉jQuery只需遍历该内部缓存,并从任何元素的特定命名空间中删除所有事件侦听器,而无需*
DOM树
编辑:问题是我不知道侦听器绑定到了哪些元素-我只知道它们绑定到的名称空间。为什么不在绑定事件时在每个元素上设置一个钩子呢
$('.some_el').addClass('has_foo_event').on('click.foo', function() {});
然后
这是我想要做的,但问题是我不知道侦听器绑定到了哪些元素。我只知道他们使用的名称空间。
$('.has_foo_event').off('.foo');