什么's是在IE8+中添加元素的最有效方法

what's the most efficient way to append elements in IE8+?

本文关键字:元素 添加 方法 有效 IE8+ 是在 什么      更新时间:2024-02-05

我有一个复杂的网页,其中有很多元素被严重操纵。虽然这在Chrome/FF上运行得很顺利,但IE(8+9)在这个页面上似乎经常冻结。

代码的一个特定部分在IE上的运行速度比在其他浏览器上慢得令人难以置信,那就是我在页面上添加新元素的地方:具体来说,我有50个(嵌套的)元素,我将其添加到documentFragment中,然后最终将documentFraction添加到实际文档中的某个元素中。最后一次追加在Chrome/FF上发生得很快,但在IE中可能需要几秒钟以上

我尝试使用html()/innerHTML,这似乎只会让事情变得更糟(它们可能比逐个附加()元素要好,但documentFragment似乎确实有帮助)。问题是,我该怎么办?有没有更有效的方法可以在IE中插入这些元素?我是不是错过了一些可能导致它们插入得如此缓慢的东西?

谢谢。


===编辑===

代码示例(不是1:1,但这是我通常所指的):

function insertContent(elementsCollection)
{
    var fragment = document.createDocumentFragment();
    for (var i=0; i < elementsCollection.length; i++)
    {
        fragment.appendChild($(collection[i])[0]);
    }
    $("#parentDiv").append(fragment);
}

我一直使用(并推荐)

rootNode.replaceChild(newElement, oldElement)

我没有遇到像你在IE/FF/Chrome/Safari中提到的那样的问题。我单独准备新的文档片段,并一次性用新的节点替换现有的节点,而不是一次构建活动的DOM树节点。