MooTools:元素处理

时间:2010-02-02 07:54:15

标签: javascript mootools

假设我在页面上有两个元素。一个是div,另一个是它的孩子,achor。假设我已经通过anchor.addEvent('click', ...)向该锚添加了一个事件。如果我设置了div .innerHTML = '',与锚点关联的“click”事件是否会被删除/处理/垃圾收集?

3 个答案:

答案 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 APIdestroy()是一种方法:

  

清空其所有孩子的元素,移除并吞噬元素。用于在pageUnload之前清除内存。

我怀疑使用innerHTML = ''删除父元素时删除的锚点会发生什么情况取决于浏览器。

jQuery提供了empty()方法,我猜其他库也可能提供方法。您可以在Removing an element from DOM中看到关于此主题的非常好的讨论。

答案 2 :(得分:0)

  1. 恕我直言,你应该使用empty()而不是innerHTML =“”。
  2. 参考文献将保持像@nemisj所说的那样,但它会“浮动”而且毫无用处。 我在这里做了一些测试:test case,也许你会觉得有趣。