JavaScript节点克隆

JS克隆节点可以使用cloneNode方法。如果克隆节点下所有的子节点,需要传递参数true,这样就能得到节点深度拷贝的一个副本。JS本身提供的这个方法并不像jQuery的clone方法可以深度克隆事件绑定函数。

克隆节点的分为三步,第一得到需要克隆节点的引用,第二调用改节点的cloneNode方法,第三把克隆的节点插入文档。

var node = document.getElementById('id');
node.cloneNode(true);
node.parentNode.appendChild(node);

克隆节点时,节点所有的属性都会被克隆,那么我们就会想,可不可以克隆节点的绑定事件。这个在IE浏览器里可以实现,所采用的事件绑定方式只能是attachEvent。

当我们要动态生成的相同的节点,是采用document.createElement效率高还是去克隆节点。在我的测试中,IE系列和Opera克隆节点会显得效率比较高。在这个IE横行的国内,还是采用克隆的方式比较好。我做了一个测试页,查看演示

// 克隆节点的方式
var span    = document.createElement('span');

while ( i < 100000) {
    cloneSpan = span.cloneNode(true);
    i++;
}

// 看起来比较2的方式
while ( i < 100000) {
    var span = document.createElement('span');
    i++;
}

现在还没有评论

留下您的大名