我有一些代码使用cloneNode
. 我有一个像<div>
标签一样的 DOM 容器。当我想将新项目附加到此容器时,我想克隆容器并将新元素附加到克隆容器而不是原始容器。最后,我将文档中的原件替换为克隆件。
但是当我实现这个时,我发现克隆对象并不会复制 DOM Level 3 事件。我可以复制 DOM 3 级事件吗?如果不是,我必须重新绑定所有事件旧项,该replaceChild
方法是否会导致内存泄漏?
var temp = this.element.cloneNode(true),
children = this.children,
len = this.children.length;
for (var i = 0, length = newChildren.length; i < length; i++) {
children.push(newChildren[i]);
temp.appendChild(newChildren[i].element);
}
if (this.element.parentNode)
this.element.parentNode.replaceChild(temp, this.element);
this.element = temp;
var ch = temp.firstChild;
children[0].element = ch;
var j = 0;
while (ch = ch.nextSibling) {
j++;
if (j > len)
children[j].element = ch;
}