渲染速度:一次添加一个DOM项或一次添加项集
Render speed: adding one DOM item at a time or adding set of items at once
当前,当我从搜索中收到结果时,我会循环搜索结果并将其附加到列表中(我想这会导致浏览器在每次添加项目时重新呈现页面-有办法确认吗?)。
$.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);
循环的每次迭代都要重新查询DOM。如果您不认为在循环时.results
元素的数量会发生变化,那么就没有理由这样做。
如果您关心性能,可以减少jQuery的使用。
var frag = document.createDocumentFragment();
$.each(results, function(key, val){
frag.appendChild(document.createElement("div"))
.appendChild(document.createTextNode(val))
});
// Since you're using a class, I assume there's more than one `.results` element
$(".results").each(function(i, el) {
el.appendChild(frag.cloneNode(true));
});
相关文章:
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- ng只重复添加项目一次
- 如何在函数中添加一次单击事件
- 当所有表单字段都完成时,jquery将图像添加到列表项中一次
- 在 foreach 循环中添加一次标题
- 在鼠标悬停时添加事件,如何只添加一次事件
- 如何确保回调只添加一次
- 添加 removeMarker 函数时,每 5 秒在地图上加载一次图钉不会显示图标
- 在 CakePHP 中,现在 View->addScript() 已被弃用,我如何向我的布局添加脚本*一次*
- 允许用户添加表单输入字段:为什么 append() 只工作一次
- 将同一记录多次添加到数据库,而不是仅添加一次
- 如何在索引数据库中仅添加一次初始数据
- Ical IOS-一次添加多个条目
- 一次添加一个项目到“;推车”;在Django、Ajax和Jquery中使用复选框
- 渲染速度:一次添加一个DOM项或一次添加项集
- jQuery只在每次单击后添加到下一个列表项,而不是一次添加到所有列表项
- 用javascript一次添加3个活动类
- 如何一次添加一个类并删除先前添加的类
- 主干:如何在添加模型数组时仅触发一次添加事件