哪些jQuery选择器表现更好?

时间:2009-11-27 11:35:54

标签: jquery

性能明智哪一个更好:

 $(".myclass").eq(0)

OR

 $("a.myclass")

注意:如果只有一个<a>代码包含.myclass

4 个答案:

答案 0 :(得分:19)

第二种 - 尽可能使用标签名称(参见jQuery performance rules的规则2)。

答案 1 :(得分:6)

第二,因为它可以使用在C / C ++中实现的浏览器document.getElementsByTagName()函数,而不是Javascript。

此外,如果只有a .myclass $('#myid'),请考虑在其上添加ID并执行document.getElementById()。通过id获取是最快的方式。它使用{{1}},再次用C / C ++实现。

答案 2 :(得分:1)

如需了解更多信息,请参阅第19页幻灯片中的Paul Irish's Anti-patterns

如果可以,请始终从ID下载。在右边更具体,在左边更一般。

有一个基于jquery的速度分析器可以让你测试这个以查看实际的速度差异,但我找不到它...

答案 3 :(得分:1)

使用萤火虫很容易描述这些东西。

console.profile();
jQuery('#id');
console.profileEnd();

有时候,这取决于你的dom /你的目标浏览器等等,而不是依赖于“最佳实践”。始终在本地进行分析,看看什么效果最好。