假设我在页面上有两个元素。一个是div,另一个是它的孩子,achor。假设我已经通过anchor.addEvent('click', ...)
向该锚添加了一个事件。如果我设置了div .innerHTML = ''
,与锚点关联的“click
”事件是否会被删除/处理/垃圾收集?
答案 0 :(得分:1)
这取决于你是否仍然引用“锚”DOM实例。如果是这样,它将保留在内存中,直到删除所有引用。
测试示例:
var parent = new Element('div');
var child = new Element('div', {
events : {
click : function() {
alert('child clicked');
}
}
});
child.innerHTML = 'child content';
parent.appendChild(child);
document.body.appendChild(parent);
parent.innerHTML = 'parent content';
document.body.appendChild(child);
答案 1 :(得分:1)
根据MooTools API:destroy()
是一种方法:
清空其所有孩子的元素,移除并吞噬元素。用于在pageUnload之前清除内存。
我怀疑使用innerHTML = ''
删除父元素时删除的锚点会发生什么情况取决于浏览器。
jQuery提供了empty()
方法,我猜其他库也可能提供方法。您可以在Removing an element from DOM中看到关于此主题的非常好的讨论。
答案 2 :(得分:0)