Javascript 如何限制jQuery附加元素中的DOM操作

Javascript 如何限制jQuery附加元素中的DOM操作,javascript,jquery,dom,Javascript,Jquery,Dom,我将遵循有关DOM操作主题的“最佳实践”。不过我有个问题。以前,我的代码是: for(var i=0;i<size;++i){ var $li = $('<li/>',{some propertie..}).data(some values); $ul.append($li); } for(var i=0;i我建议您查看。因为jQuery1.4.3可以设置。这看起来像: var str_html = ''; for(var i=0;i<size;++i)

我将遵循有关DOM操作主题的“最佳实践”。不过我有个问题。以前,我的代码是:

for(var i=0;i<size;++i){
    var $li = $('<li/>',{some propertie..}).data(some values);
    $ul.append($li);
}

for(var i=0;i我建议您查看。

因为jQuery
1.4.3
可以设置。这看起来像:

var str_html = '';
for(var i=0;i<size;++i){
   var li  = '<li data-somevalue="foobar">...</li>';
   str_html += li;
}
$ul.append(str_html);
实际上,您可以将任何类型的数据放入这样的属性中,甚至是
JSON解码的
对象字符串文本(由jQuery自动解析):

看一看(这篇博文是Resig自己写的,所以提到的模板API很可能使用DocumentFragment)

这是在不使用innerHTML的情况下附加DOM元素的最佳方法。尽管innerHTML几乎总是最快的方法


如果$ul是DOM树中已经存在的元素,您可以通过从树中删除它、向其中添加LI元素并重新附加它来加快速度。但是,这并不能保证更好的性能:使用分析工具是衡量影响的唯一方法。

为什么您认为需要将其替换为基于字符串的应用程序roach?你真的有性能问题吗?没门!我不知道!谢谢
var str_html = '';
for(var i=0;i<size;++i){
   var li  = '<li data-somevalue="foobar">...</li>';
   str_html += li;
}
$ul.append(str_html);
$('li').data('somevalue') // === foobar
'<li data-somevalue="{'foo':'Barrrrr'}">...</li>';
$('li').data('somevalue').foo // === Barrrr