给出以下代码
<div id="app">
<div id="foo" />
</div>
<script>
$('#foo').bind('click', function(){});
</script>
Run Code Online (Sandbox Code Playgroud)
我计划更换#app [eg $('#app').html('...');,or innerHTML = '...';]的内容.我知道我可以使用jQuery .remove()来调用'destroy'解除事件的处理程序.事实上,有一个destroy处理程序设置为删除事件使我相信,如果不解除事件的绑定,当删除DOM元素时,处理程序仍将存在于内存中.
因此,如果DOM元素#foo不再存在,那么处理程序是否也会消失,或者它是否会在浏览器内存中丢失?
我一直在阅读,试图弄清楚浏览器中的内存泄漏,尤其是.IE浏览器.我知道泄漏是由Javascript引擎和DOM对象树之间的垃圾收集算法不匹配引起的,并且会持续存在.我不明白的是为什么(根据我正在阅读的文章中的一些陈述)在浏览器卸载页面后不回收内存.导航离开网页应该将所有DOM和javascript对象放在范围之外,不应该吗?
说,我有一个元素<img id="foo" />并附加了一些事件,例如click(不是内联onclick!).
// somewhere i wrote
foo.addEventListener("click", clickHandler, false);
...
// somewhere i will write
foo.parentNode.removeChild(foo);
Run Code Online (Sandbox Code Playgroud)
我是否还需要删除所有活动?