javascript - 渲染速度 : adding one DOM item at a time or adding set of items at once

标签 javascript jquery dom dom-manipulation

目前,当我从搜索中收到结果时,我循环遍历结果并将其附加到列表中(我猜这会导致浏览器在每次添加项目时重新呈现页面 - 有没有办法确认这一点?)。

$.each(results, function(key, val){
    $(".results").append("<div>"+ val +"</div>");
});

第二个浏览器的这部分有点滞后(有动画和东西......)。创建单独的 div.results 并在 javascript 中添加项目然后在 dom 中替换它会更有效吗?最有效的方法是什么?这些事情通常是如何完成的?

最佳答案

我会做的是使用 document.createDocumentFragment() 并在那里执行所有可能的操作,然后接触真实的 DOM 一次。 (在循环旁边缓存一次选择器可能是个好主意):

var frag = document.createDocumentFragment();
$.each(results, function(key, val){
    var a = document.createElement("div");
    a.innerHTML = val;
    frag.appendChild(a);
});
$(".results").append(frag);

关于javascript - 渲染速度 : adding one DOM item at a time or adding set of items at once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17632285/

相关文章:

javascript - 如何解决MomentJS和Asp.net Core之间的时差

javascript - 一次运行所有过去的作业

javascript - Fuel ux 复选框全选

php - 在PHP中操作DOM

javascript - 如何确定 Html 表格列的类型

javascript - 如何使类(class)在点击事件上处于事件状态

php - 在 laravel 或 Php 的搜索字段中显示 Json

javascript - 页面跳起来而不是向上滚动

javascript - 文档元素 click() 方法未在 ionic Angular 应用程序中触发

javascript - 如何通过nodejsexpress从Angularjs上传文件到s3