Javascript HTMLElement.cloneNode不';t复制DOM级别3事件

Javascript HTMLElement.cloneNode不';t复制DOM级别3事件,javascript,dom,javascript-events,Javascript,Dom,Javascript Events,我有一些使用cloneNode的代码。我有一个类似于标记的DOM容器。当我希望将新项附加到此容器时,我希望克隆该容器并将新元素附加到克隆的容器而不是原始容器。最后,我将用文档中的克隆替换原始文档 但是当我实现这个时,我发现克隆对象不会复制DOM级别3事件。我可以复制DOM级别3事件吗?如果不是,我必须重新绑定所有事件旧项,replaceChild方法是否会导致内存泄漏 var temp = this.element.cloneNode(true), children = this.chi

我有一些使用
cloneNode
的代码。我有一个类似于
标记的DOM容器。当我希望将新项附加到此容器时,我希望克隆该容器并将新元素附加到克隆的容器而不是原始容器。最后,我将用文档中的克隆替换原始文档

但是当我实现这个时,我发现克隆对象不会复制DOM级别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;
}
var temp=this.element.cloneNode(真),
children=this.children,
len=this.children.length;
for(var i=0,length=newChildren.length;ilen)
children[j].element=ch;
}

您是指事件侦听器吗?它们从来都不可复制。为什么要替换整个容器?只需添加一个新元素。@Bergi:如果添加新元素,我认为添加几个元素可以,但如果元素太多,这是一件坏事。不。如果有什么区别的话,那么“许多元素”是坏事,而不是它们的附加。克隆完整的容器肯定比克隆多个附件更糟糕。如果你真的在乎,构建一个DOMFragment并附加它。然而,如果你需要的话,可能还有其他的问题。添加新元素而不进行克隆和替换也只能进行一次回流。