javascript - 通过 JavaScript 加速将 HTML 元素附加到 div 中

标签 javascript jquery html css

我在我的 div 中附加了一些元素作为 ListView 。 我的元素的所有详细信息都存储在一个数组中。 当元素少于 50 个时,追加花费的时间非常少。 然而,当元素大小增加到 400 或更多时,它花费了很多时间 附加我的列表。

我如何可以更快地或动态地将 div 附加到我的 div。

结构是这样的。

<div id="main">
<div id="item"></div>
.....
.
.

.
.
<div id="item"></div>

</div>

这个主 div 在我的应用程序中是一个不同的屏幕。

最佳答案

作为@arete已经提到,DocumentFragment将提高将元素附加到 DOM 中的性能。

使用 DocumentFragments 比重复的单个 DOM 节点注入(inject)更快,并且允许您对新元素执行 DOM 节点操作,而不是通过 innerHTML 进行大量注入(inject)。

The DocumentFragment interface represents a minimal document object that has no parent. It is used as a light-weight version of Document to store well-formed or potentially non-well-formed fragments of XML.
- MDN

我们可以创建一个空的 DocumentFragment,使用 document.createDocumentFragment()方法,并通过 .appendChild() 追加创建的子级JavaScript原生方法,如下:

var frag = document.createDocumentFragment(),
    limit = 400,
    element = 'div',
    clsName = 'item';

for (var i=0; i<limit; i++) {
    var box = document.createElement(element);
    box.className = clsName;
    // Append the child into the Fragment
    frag.appendChild(box);
}

// Finally, append the fragment into the real DOM (touch the DOM just once)
document.getElementById('main').appendChild(frag.cloneNode(true));

WORKING DEMO .

这是一个 performance test jsPerf

上使用 DocumentFragments

此外,我 updated the fiddle demo,由@Zword提供,您可能需要考虑。

关于javascript - 通过 JavaScript 加速将 HTML 元素附加到 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544600/

相关文章:

javascript - 将另一个 CELL 值绑定(bind)到 Jqgrid 中的 Showlink 选项中

javascript - pdf.js 从 Uint8Array 打开或生成 pdf

html - 将鼠标悬停在其上方的 css 覆盖菜单中

html - 在循环中倾斜按钮,而不是文本

php - 您可以通过电子邮件从网页发送文件吗

javascript - nodejs npm 启动错误并发

jquery - Infragistics Ultrawebtree 控件和子节点检查父节点使用 JQuery 检查

javascript - 比较所选单选按钮的值

javascript - 我应该将自定义 javascript 对象放置在哪里?

javascript - jQuery 附加输入元素