2010-10-31 42 views
2

哪些代码最快?Jquery的代码问题

for(i=0; i<100; i++) { 
    jQuery("#myDiv").append("<span>" + i + "</span>"); 
} 
// 

var i, markup = ""; 
for (i=0; i<100; i++) { 
    markup += "<span>" + i + "</span>"; 
} 
// 

jQuery("#myDiv").append(markup); 

// 
var i, markup = ""; 
for (i=0; i<100; i++) { 
    markup += "<span>" + i + "</span>"; 
} 

// 
jQuery("#myDiv").append("<div>" + markup + "</div>"); 

// 
+0

要区分不同的情况有点困难。 – 2010-10-31 05:57:13

回答

0

这很难说,但这里有一个更好的,更好地工作在更大的字符串:

var markup = []; 
for(int i=0;i<100;i++){ 
    markup.push('<span>' + i + '</span>'); 
} 
jQuery('#myDiv').append(markup); 
2

我猜这一个:

jQuery("#myDiv").append(markup); 

我猜有几乎与此不同:

jQuery("#myDiv").append("<div>" + markup + "</div>"); 

原因是,我认为第一种情况最慢,是你创建jQuery对象100次而不是一次。

当然,最好是对性能问题进行配置或其他测试。查看John Resig的Deep Profiling jQuery apps的帖子。

+0

伟大的回应。谢谢。将测试。 – Ben 2010-10-31 06:33:12

+0

除非你错了。不要只是猜测,总是测试。它甚至押韵,大声笑:) – galambalazs 2010-10-31 10:56:46

+0

我完全同意你应该测试。这就是为什么我写我猜测。 :) – 2010-11-01 17:30:01

4

这很容易test

  1. 第三个是最快的,因为jQuery将有一个包装元素,只有这需要连接到父级,它完成。它的比其他两个快3-5倍

  2. 第一个将是第二个,因为jQuery直接附加每个元素而没有处理大字符串的开销。

  3. 第二个将是最慢的,因为巨大的字符串被创建后,就没有根元素,所以<span>旨意添加一个接一个父。

注意:最后两个的实际顺序可能因不同的浏览器而异。它们有些相同。