1

我有一些代码使用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;
}
4

0 回答 0