更好的JQuery性能语法?

时间:2013-05-29 03:01:18

标签: javascript jquery

以下2种语法是否存在性能差异?

  1. $(“span.foo”)
  2. $(“.foo”)
  3. 有人告诉我,第一个只会搜索span,其类别为foo而第二个搜索所有元素。

2 个答案:

答案 0 :(得分:3)

如果您正在寻找与性能相关的问题,最好对不同的解决方案进行基准测试,看看哪个更好。

它们可能在标记上有不同的结果基础。

但如果你只有span的{​​{1}}课,那么第二个会更快。
原因可能是在第一种情况下,它将首先加载文档中的所有span,然后使用类foo过滤它们,而第二种情况则是原生foo来获取元素。< /子>

看看这个jsperf benchmark

答案 1 :(得分:1)

谁告诉过你这是正确的。

在超过100,000次迭代的两个元素上进行选择时,看起来大概是半秒钟(Firefox,Chrome小于此值)。

http://jsfiddle.net/83qcy/

var start, end, i;

start = new Date();
for(i = 0; i < 100000; i++){
    $("span.foo");
}
end = new Date();
$("span.foo").html(end - start);

start = new Date();
for(i = 0; i < 100000; i++){
    $(".foo");
}
end = new Date();
$("div.foo").html(end - start);

我相信你可以成像,选择大量的元素肯定需要更长的时间。您可能也不会选择100,000次,但随着网站变得越来越大,javascript性能可能是最大因素之一,jQuery的上下文和选择器可以提高效率。

此外,如果您只想将函数应用于具有“foo”类的跨度,则可能正在选择不需要的元素