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');