关于如何从元素中删除所有“特定的”处理程序(例如onclick),或者如何从元素中清除所有事件等等,有很多问题。
这个问题更广泛一些。我们在asp.net站点的IE7和IE8下面临巨大的内存泄漏,缩小这些漏洞的一个调整就是从页面上的所有元素中解除所有事件的绑定。基本上如下:
$('*').off();
现在,我们正在努力提高应用程序的性能,毫不奇怪,这个特定的行是热点之一。
因此,问题是:是否有任何方法能够更有效地实现相同的结果(显式地从文档中的所有元素中删除所有处理程序)?
不-去选择:
我想的是使用一些jQuery内部(甚至是非公共API)来利用对带有处理程序的元素的检测。但它略高于我目前在jQuery的能力。如果有帮助,我们的目标是jQuery 1.7.1。
发布于 2013-03-22 02:21:55
我认为您可以创建类似hasEvent的东西来检测事件,但我怀疑您的问题更多的是遍历dom,而不是对没有事件的元素调用.off()
。你可以测试一下以确保。
根据应用程序的性质,通过调整选择器以更精确地瞄准元素,您可能会获得一些性能。
请参阅:http://www.artzstudio.com/2009/04/jquery-performance-rules/
另一个想法是添加事件处理程序的override jQuery functions,这样就可以填充数组供以后使用。它不需要修改您的数百个文件,但仍然会给您更多的直接访问,以便以后的操作。
https://stackoverflow.com/questions/15558451
复制相似问题