首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从所有元素中删除所有处理程序

从所有元素中删除所有处理程序
EN

Stack Overflow用户
提问于 2013-03-21 21:25:06
回答 1查看 274关注 0票数 2

关于如何从元素中删除所有“特定的”处理程序(例如onclick),或者如何从元素中清除所有事件等等,有很多问题。

  1. How to remove all Click event handlers in Jquery
  2. Jquery: how to release all event handlers, dom changes?

这个问题更广泛一些。我们在asp.net站点的IE7和IE8下面临巨大的内存泄漏,缩小这些漏洞的一个调整就是从页面上的所有元素中解除所有事件的绑定。基本上如下:

代码语言:javascript
运行
复制
$('*').off();

现在,我们正在努力提高应用程序的性能,毫不奇怪,这个特定的行是热点之一。

因此,问题是:是否有任何方法能够更有效地实现相同的结果(显式地从文档中的所有元素中删除所有处理程序)?

不-去选择:

  • “释放页面”-内存泄漏是这样保存的。
  • “每次附加处理程序时,都会将其存储在数组中”--这样的地方太多了。

我想的是使用一些jQuery内部(甚至是非公共API)来利用对带有处理程序的元素的检测。但它略高于我目前在jQuery的能力。如果有帮助,我们的目标是jQuery 1.7.1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-22 02:21:55

我认为您可以创建类似hasEvent的东西来检测事件,但我怀疑您的问题更多的是遍历dom,而不是对没有事件的元素调用.off()。你可以测试一下以确保。

根据应用程序的性质,通过调整选择器以更精确地瞄准元素,您可能会获得一些性能。

请参阅:http://www.artzstudio.com/2009/04/jquery-performance-rules/

另一个想法是添加事件处理程序的override jQuery functions,这样就可以填充数组供以后使用。它不需要修改您的数百个文件,但仍然会给您更多的直接访问,以便以后的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15558451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档