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

标签 javascript jquery html internet-explorer

我有一个复杂的网页,其中有很多被大量操纵的元素。 虽然这在 Chrome/FF 上运行相当流畅,但 IE (8 + 9) 似乎经常在此页面上卡住。

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

我尝试使用 html()/innerHTML,这似乎只会让事情变得更糟(它们可能比 append() 更好——逐个添加元素,但 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 树节点。

关于javascript - 在 IE8+ 中附加元素的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648674/

相关文章:

jquery 将当前元素包含在新的父容器中

Javascript 通过数据属性中的函数名回调

javascript - JavaScript 中的原型(prototype)/类/公共(public)属性

javascript - 有什么方法可以定义执行任何计划脚本的最大持续时间?

javascript - 单击按钮创建警报以显示 data-id 属性

javascript - 通过下拉菜单更改图像的不透明度

Javascript onclick 函数与 if 和 else 不按其应有的方式工作

javascript - Pubnub.history()分页

javascript - 如果数组的开头有共同部分,如何从数组中删除元素?

html - 如何从添加到我的元素的字体中使用@font-face?