jQuery类选择器:带或不带标记名?

时间:2012-04-23 09:41:45

标签: javascript jquery

我正试图找到旧问题的明确答案“我在选择课程时应该使用标签名吗?”

我在网上浏览jQuery最佳实践,几乎总是有一点使用jQuery(“tag.className”);因为它首先使用getElementByTagName。

所以我已经在jsPerf上建立了一个基准来检查。我已经使用了我网站上的源标记,所以它更像是一个真实世界的测试并在所有现代浏览器上运行基准测试,除了Chrome和Opera之外,所有其他现代浏览器都说jQuery(“。className”);虽然这与我在线书籍和教程中阅读的几乎所有内容相比,但速度要快一个数量级。我认为它更快,因为那些浏览器本身支持getElementByClassName。

这是基准:

http://jsperf.com/length-detection

您认为最好的是什么?

非常感谢

克里斯

1 个答案:

答案 0 :(得分:3)

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

在那里我们可以谈论“量级”。老实说,如果不查看当前的jQuery源代码,我无法分辨jQuery的内幕。即使它使用getElementsByClassNames,由于jQuery带来的所有血液和开销,它对整体性能几乎没有影响。无论如何,查询元素的基本规则很简单:不要过度具体。 CSS选择器从右到左工作,所以当我们有element.classname之类的查询时,大多数引擎会首先获取类名为classname的所有元素,然后过滤掉也属于to元素类型的节点element