JQuery清理事件处理程序

时间:2010-08-12 12:31:51

标签: javascript jquery

我是一个动作脚本开发人员进入jquery / javascript开发。我有关于事件处理程序和绑定/解除绑定的问题。

比如说我有一个带有img元素的div,其中包含一个onerror事件处理程序。如果我用新的替换那个div,我需要删除绑定到img元素的eventhandler。由于img不再出现在文档中,浏览器是否足够聪明才能将其删除或者是否会导致内存泄漏?

来自动作脚本我通常会尝试不断删除旧的事件处理程序。那么在为网络浏览器编写javascript时我需要这样做吗?

事件处理程序添加了$('imgElement').error(errorFunction);

2 个答案:

答案 0 :(得分:11)

如果您使用jQuery绑定事件,只需在替换它之前调用旧元素上的.remove(),或者如果您只想清除它,请.empty(),这两个清理事件处理程序元素和它的孩子,或者在.empty()的情况下,只是孩子们。

如果你只是替换它,例如{em> 将泄漏内存,因为这些元素的处理程序或数据将保留在.html(content)对象上。

答案 1 :(得分:0)

尝试使用firequery,它是一个显示所有活动事件侦听器和jquery.data()的firefox插件

我也很好奇unbind()事件是否是最佳做法......