jQuery 类选择器:带或不带标签名

jQuery Class Selectors: With or Without tagname?

本文关键字:标签名 选择器 jQuery      更新时间:2023-09-26

我试图为老问题"在选择类时使用标签名称吗?

无论我在网上寻找jQuery最佳实践,几乎总是使用jQuery("tag.className");因为这首先使用getElementByTagName。

所以我在jsPerf上设置了一个基准来检查。我使用了我网站上的源代码标记,所以它更像是一个现实世界的测试,并在所有现代浏览器上运行基准测试,除了 Chrome 和 Opera,所有其他现代浏览器都说 jQuery(".className");快了一个数量级,尽管这与我在网上的书籍和教程中读到的几乎所有内容背道而驰。我认为它更快,因为这些浏览器原生支持 getElementByClassName。

这是基准测试:

http://jsperf.com/length-detection

你认为什么是最好的?

非常感谢

克里斯

如果你真的追求性能,你根本不应该使用 jQuery 来查询元素。请参阅此jsperf:http://jsperf.com/jquery-selecting-by-class

在那里我们可以谈论"幅度"。老实说,如果不研究当前的jQuery源代码,我就无法知道jQuery在引擎盖下做了什么。即使它使用getElementsByClassNames由于jQuery带来的所有血腥和开销,它对整体性能的影响也很小,零。无论如何,查询元素的基本规则很简单:不要过于具体。CSS 选择器从右到左工作,所以当我们有一个像 element.classname 这样的查询时,大多数引擎会首先抓取所有类名为 classname 的元素,然后过滤掉也属于 to 元素类型的节点 element