jquery - 在 jquery 中创建元素并将它们附加到 dom 的最佳方法是什么?

标签 jquery dom

假设我使用 jQuery 在 javascript 代码中添加 li 元素。

示例 1:

for(var i=0 i<=5; i++){

    var li = $("<li/>");
    li.html("teest "+i);
    $("#ulid").append(li);

}

我了解到上面的例子是一个不好的做法,因为循环每次点击append(li)时都会重建dom。

如果是这种情况,执行与上述示例完全相同的操作的最佳方法是什么?

最佳答案

您正在做的事情可能适合绝大多数用例。您的代码最终将为每个 li 调用一次 DOM appendChild 函数,我很确定这也是迄今为止所有答案都会做的事情。再说一遍,这可能没问题,尽管每次都可能导致回流。

在那些绝对需要避免在每次循环中引起 DOM 回流的情况下,您可能需要 document fragment .

var i, li, frag = document.createDocumentFragment();
for(i=0; i<=5; i++){
    li = $("<li>" + "teest "+i + "</li>");
    frag.appendChild(li[0]);
}
$("#ulid").append(frag); // Or $("#ulid")[0].appendChild(frag);

当您追加片段时,会追加片段的子片段,而不是实际的片段。这里的优点是,作为单个 DOM 调用,您可以让 DOM 引擎有机会添加所有元素,并且仅在最后进行回流。

关于jquery - 在 jquery 中创建元素并将它们附加到 dom 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026843/

相关文章:

javascript - 单击按钮更改 javascript/css 中 <body> 的文本字体大小

javascript - ajax 和 getJSON 调用之间的区别?

javascript - JS构造函数模式?

javascript - 数组的appendChild仅追加到最后一个元素

jquery - 为按钮使用 SVG 图标而不是使用 awesome 字体

javascript - 如果将响应图像添加到选项卡式导航菜单中的列,如何限制列宽不扩大

java - JSOUP 仅删除关闭和/或打开 div

javascript - 这个 JS 复制技巧是如何工作的?

javascript - jQuery 获取 anchor 值

javascript - 将提示存储为对象值