如果您还使用removeChild()
删除元素,则会删除与项目关联的事件?即使该物品被简单的this.innerHTML =''
删除?这同样适用于像这样的内联元素相关的事件<div onclick="/*this event*/"> </div>
?提前致谢。删除元素是否也会删除其事件侦听器?
回答
我做了如下试验:
<div class="wrapper">
<a href="#">Link</a>
</div>
<script type="text/javascript">
window.onload = function() {
var wrapper = document.querySelector(".wrapper");
var link = document.querySelector("a");
link.addEventListener("click", function() {
console.log("click");
});
setTimeout(function() {
wrapper.innerHTML = "";
}, 4000)
}
</script>
和监测开发工具的结果。加载页面后,附加事件从5变为6.链接从DOM中删除,事件侦听器再次变为5。
因此,内联事件也可以通过innerHTML去除? – user2809046
@ user2809046 [真的没有东西被删除](http://jsfiddle.net/Hm8GE/3/),如果你仍然有一个元素的引用,就像在Tibos的回答中所说的那样。如果没有参考,该元素及其成员将被删除。 – Teemu
因此,你建议我手动删除事件?以及如何内联事件? – user2809046
答案是这取决于你是否有引用它。
var d = document.createElement('div');
otherElement.appendChild(d);
otherElement.removeChild(d);
// still have reference to d, it will exist, event listener remains even if it won't be fired.
如果你不再有办法访问它,该元素将垃圾与听众(所有浏览器> IE6)一起收集。
同样在IE <7中,如果在事件处理程序本身中没有对该元素的现有引用。即没有像'var elem = event.srcElement;'声明的变量'在移除具有此处理程序的元素时,IE <7'elem'会导致内存泄漏。 – Teemu
- 1. 在删除元素之前是否需要删除事件侦听器?
- 2. 当您使用.html()删除元素时,jQuery中的事件侦听器是否会自动删除?
- 3. AS3不会删除事件侦听#1009
- 4. 如何从DOM元素中删除事件侦听器?
- 5. 的JavaScript:在元素中删除事件侦听器
- 6. JQuery - 删除元素中的所有事件侦听器
- 7. 如何删除事件侦听器?
- 8. 如何删除事件侦听器?
- 9. Chrome删除事件侦听器?
- 10. gmap3删除事件侦听器
- 11. 的NodeJS删除事件侦听器
- 12. Hammer.js不能删除事件侦听器
- 13. 删除新库的事件侦听器
- 14. 删除重复的事件侦听器
- 15. 删除事件侦听器3
- 16. 删除Dojo dGrid的事件侦听器
- 17. 删除node.js事件,侦听器也消失了吗?
- 18. 在删除它们所连接的元素之前,是否需要删除javascript事件侦听器?
- 19. GC清除会删除其侦听器中引用的元素变量吗?
- 20. 删除事件侦听器仍然会触发另一个元素被徘徊
- 21. 删除其侦听器中的JComboBox元素
- 22. flex 4:删除元素是否也会导致元素失效?
- 23. 删除匿名侦听器
- 24. 删除元素上事件侦听器的最佳方法是什么?
- 25. 事件不会从AS3中的侦听器中删除
- 26. 删除事件监听器
- 27. 删除事件监听器
- 28. 删除事件监听器
- 29. 删除事件侦听器的当前发射事件
- 30. 如何从父级删除jQuery事件侦听器而不删除相似的侦听器?
我只是想知道,如果他们保持不变的记忆... – user2809046
我认为这取决于从浏览器和它的垃圾收集器....但我不知道 –
'removeChild之()' - 它删除元素内的所有信息,当然它删除它的'onclick'等 –