什么是在IE8 +中追加元素的最有效方法?

时间:2012-07-25 11:27:39

标签: javascript jquery html internet-explorer

我有一个复杂的网页,其中包含大量被严格操纵的元素。 虽然在Chrome / FF上运行非常顺利,但IE(8 + 9)似乎在此页面上经常冻结。

代码的一个特定部分在IE上运行得比在其他浏览器上慢得多,我将新元素添加到页面:具体来说,我有50个(嵌套)元素,我追加到documentFragment,然后最终我将documentFragment附加到实际文档中的某个元素。最后一次附加在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);
}

1 个答案:

答案 0 :(得分:2)

我一直使用(并推荐)

rootNode.replaceChild(newElement, oldElement)

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

相关问题