如果您还删除了removeChild()
元素,则会删除与商品相关联的事件?即使使用简单的this.innerHTML =''
删除了该项目?这同样适用于与此<div onclick="/*this event*/"> </div>
这样的内联元素相关联的事件?提前谢谢。
答案 0 :(得分:7)
答案是,这取决于你是否有引用。
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.
如果您无法再访问它,该元素将与侦听器一起被垃圾收集(对于所有浏览器&gt; IE6)。
答案 1 :(得分:4)
我做了以下测试:
<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。