如果您還使用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'等 –