3

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

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

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

这是基准:

http://jsperf.com/length-detection

你认为什么是最好的?

非常感谢

克里斯

4

1 回答 1

3

如果您真的追求性能,则根本不应该使用 jQuery 来查询元素。看到这个 jsperf:http: //jsperf.com/jquery-selecting-by-class

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

于 2012-04-23T10:02:52.613 回答