我知道可以这样做:$('*').off('.namespace');
但我感觉使用*
并不是一个好主意,因为jQuery会遍历整个DOM树,这会导致速度变慢。
jQuery内部的$.cache
包含了通过.on()
绑定的事件监听器的信息。
有没有办法告诉jQuery只需遍历内部缓存,并从任何元素中删除特定命名空间的所有事件监听器 - 而不必遍历DOM树?
编辑:问题在于我不知道监听器绑定到哪些元素 - 我只知道它们绑定的命名空间。
我知道可以这样做:$('*').off('.namespace');
但我感觉使用*
并不是一个好主意,因为jQuery会遍历整个DOM树,这会导致速度变慢。
jQuery内部的$.cache
包含了通过.on()
绑定的事件监听器的信息。
有没有办法告诉jQuery只需遍历内部缓存,并从任何元素中删除特定命名空间的所有事件监听器 - 而不必遍历DOM树?
编辑:问题在于我不知道监听器绑定到哪些元素 - 我只知道它们绑定的命名空间。
$('.some_el').addClass('has_foo_event').on('click.foo', function() {});
那么
$('.has_foo_event').off('.foo');