我是一个动作脚本开发人员进入jquery/javascript开发.我有一个关于事件处理程序和绑定/解除绑定的问题.
比方说我有一个带有img元素的div,其中包含一个onerror事件处理程序.如果我用新的替换那个div,我需要删除绑定到img元素的eventhandler.由于img不再在文档中,浏览器是否足够智能删除它还是会导致内存泄漏?
来自actionscript我通常会尝试不断删除旧的事件处理程序.那么在为Web浏览器编写javascript时我需要这样做吗?
事件处理程序添加了 $('imgElement').error(errorFunction);
如果您使用jQuery绑定事件,只需.remove()
在替换它之前调用旧元素,或者.empty()
如果您只想清除它,这两个清理元素及其子元素的事件处理程序,或者.empty()
仅仅是儿童.
如果你只是替换它,例如.html(content)
你将泄漏内存,因为这些元素的任何处理程序或数据将留在$.cache
对象上.