如何通过命名空间从所有DOM元素中有效地删除事件侦听器
How to efficiently remove event listeners by namespace from ALL DOM elements?
我知道我可以这样做:$('*').off('.namespace');
但我觉得*
不是一个好主意,因为jQuery将遍历整个DOM树,这会很慢。
jQuery的内部$.cache
包含有关通过.on()
绑定的事件侦听器的信息
有没有什么方法可以告诉jQuery只需通过内部缓存,并从任何元素中删除特定命名空间中的所有事件侦听器,而不必*
DOM树?
编辑:问题是我不知道监听器绑定到了哪些元素-我只知道它们绑定到了哪个命名空间。
当您将事件绑定到每个元素时,为什么不在它上面加一个钩子呢?
$('.some_el').addClass('has_foo_event').on('click.foo', function() {});
然后
$('.has_foo_event').off('.foo');
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 如何使用Node.js最有效地解析网页
- 如何在AngularJS中有效地检查日期是否有效
- 有效地获取两个区间之间的随机整数
- 如何在three.js中有效地使用TraingleStripDrawMode
- 如何有效地创建多维javascript数组
- 在JavaScript中高效地删除对象
- 如何有效地将Float32Array插入Float32Array
- 如何有效地匹配两个不同 JavaScript 对象上的 id,并将它们合并在一起
- Javascript画布:如何有效地计算两个画布的距离
- 有效地串行化(并从nodejs读取)int数组
- 我怎样才能更有效地获取这个数字
- 我如何创建一个Chrome应用程序,有效地充当信息亭模式下的启动页面
- Javascript函数可以更有效地处理并发异步函数
- 如何更有效地重写
- 有效地从 DOM 中删除文本节点
- AngularJS new push()ed item to ngRepeat $Scope 不能有效地编辑或删除
- 有效地从DOM中删除项
- 如何通过命名空间从所有DOM元素中有效地删除事件侦听器
- 如何使用jQuery有效地添加和删除类