当将数据插入dom时,我会出现性能问题。
插入+ jQuery移动增强完成了对页面扫描()事件,jQuery移动版本1.4.2。
通过比较我想要做的三个简化版本,我试着看看哪种方法是最快的:
jQuery方法:
for(var i=0;i<2000;++i){
$('<div>').attr({'data-role':'collapsible','id':'asdf'+i+''}).html('<h2>asdf</h2>').appendTo("#manage_content");
$('<ul>').attr({'data-role':'listview'}).html('<li>bit</li>').appendTo('#asdf'+i+'');
}
$('#manage').trigger('create');纯js,创建所有节点:
var d=document.createDocumentFragment();
var title,listitem,list;
var coll=new Array();
for(var i=0;i<2000;++i){
coll[i]=document.createElement('div');
coll[i].setAttribute("data-role", "collapsible");
title = document.createElement('h2');
title.innerHTML='asdf';
coll[i].appendChild(title);
list=document.createElement('ul');
list.setAttribute("data-role","listview");
listitem = document.createElement('li');
listitem.innerHTML='bit';
list.appendChild(listitem);
coll[i].appendChild(list);
d.appendChild(coll[i]);
}
document.getElementById("manage_content").appendChild(d);
$('#manage').trigger('create');大字符串的jQuery:
var html='';
for(var i=0;i<2000;++i){
html+='<div data-role="collapsible"><h2>asdf<h2><ul data-role="listview"><li>bit</li></ul></div>';
}
$('#manage_content').append(html);
$('#manage').trigger('create');令我惊讶的是,这三种方法产生了相同的结果(大约7秒的执行时间.)
我是不是做错了什么?有更好的办法吗?
我已经看到了很多与这个主题相关的问题,但大多已经过时,或者说纯javascript应该更快一些,但对我来说并非如此。
没有jQuery增强:
发布于 2014-06-17 12:26:31
假设只使用jquery进行css格式设置,那么我们可以做些什么来加速dom插入+增强。
CSS:
.projectxtask a{背景颜色:#33 33ccff!重要;填充-右:2.6em!重要;边框-顶部:1px实心黑色!重要;边框-底部:1px实心黑色!重要;}.inline{显示:内联!重要;} .coll_head_butt{边距-左:20 1px!重要;边框样式:无!重要;框-阴影:无!重要}
联署材料:
$(‘.ui-可折叠-标题’).on(‘单击’,函数(事件,ui){ var coll_content = $(this).siblings();if(coll_content.is(":visible")) {$('a',this).removeClass(“ui-图标-减去”).addClass(“ui-图标-+”);coll_content.hide();} {$('a',this).removeClass(“ui-图标-plus”).addClass(“ui-图标-减号”);coll_content.show();};
编写代码有点烦人,但是如果您有类似于我的jquery的性能问题,这是非常值得的。
我在这个示例的可折叠标头中添加了图标,因为在jquery中,您将使用<.a数据-图标=check data-iconpos=notext data-role= button >来获取图标按钮,如果没有jquery增强,这是不可能的,因为html中不允许嵌套的<.a>标记,浏览器将对其进行更正。
当手动添加类时,像我在这里所做的那样,用<.a>替换<.p>似乎是有效的。
https://stackoverflow.com/questions/24262590
复制相似问题