Javascript 更好的JQuery性能语法?
以下2种语法是否存在性能差异Javascript 更好的JQuery性能语法?,javascript,jquery,Javascript,Jquery,以下2种语法是否存在性能差异 $(“span.foo”) $(“.foo”) 有人告诉我,第一种方法只会搜索span,其类是foo,而第二种方法会在所有元素中进行搜索。如果您正在寻找与性能相关的问题,最好对不同的解决方案进行基准测试,以确定哪种解决方案更好 基于标记,它们可能有不同的结果 但是如果类foo只有span,那么第二个会更快。 原因可能是在第一种情况下,它将首先加载文档中的所有span,然后使用类foo对其进行过滤,而第二种情况下,您将使用本机getElementsByClassnam
$(“span.foo”)
$(“.foo”)
有人告诉我,第一种方法只会搜索
span
,其类是foo
,而第二种方法会在所有元素中进行搜索。如果您正在寻找与性能相关的问题,最好对不同的解决方案进行基准测试,以确定哪种解决方案更好
基于标记,它们可能有不同的结果
但是如果类foo
只有span
,那么第二个会更快。原因可能是在第一种情况下,它将首先加载文档中的所有span,然后使用类
foo
对其进行过滤,而第二种情况下,您将使用本机getElementsByClassname
获取元素
看看这个谁告诉过你这是正确的 当在100000次迭代中选择两个元素时,看起来大约需要半秒钟(Firefox,Chrome比这要短)
var开始、结束、i;
开始=新日期();
对于(i=0;i<100000;i++){
$(“span.foo”);
}
结束=新日期();
$(“span.foo”).html(结束-开始);
开始=新日期();
对于(i=0;i<100000;i++){
$(“.foo”);
}
结束=新日期();
$(“div.foo”).html(结束-开始);
我相信你可以想象,选择更多的元素肯定需要更长的时间。您可能也不会选择100000次,但随着网站变得越来越大,javascript性能可能是最大的因素之一,jQuery的上下文和选择器可以提高效率
此外,如果您只想将函数应用于具有“foo”类的跨距,您可能正在选择不需要的元素。有人从Word中复制/粘贴代码,
“!=“
当然,他们会选择不同的东西。CSS选择器就是这样工作的。性能差异是不相关的。使用选择你需要的元素的那一个。这是半不相关的,除非用户感觉到。希望你永远不会有不同的类和元素标记行。他们在做不同的事情。不是吗试图比较它们的性能是没有意义的。苹果对桔子,等等。
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);