4

寻求提高我的jQuery选择器的性能。所以任何提示或文章作为最好的每个formant jquery选择器?例如选择一个div的id。在线我可以提供html和比较我可以用来选择所需元素的不同选择器。比较jquery选择器的性能

回答

10

您可以比较选择性能在这里:http://jsperf.com/

只需设置你的HTML,包括jQuery和要比较的测试情况下,每个选择的地方。

许多规则here仍然适用,但是游戏中的jQuery 1.4.3+修改一下,这种嘶嘶声(jQuery的选择器引擎)将在支持它的浏览器使用querySelectorAll()后。

+0

注意。它总是用于'document'上下文(即'nodeType == 9')。 1.4.3在元素节点上使用它(即'nodeType == 1')。 – 2010-10-28 23:59:19

1

This article详细介绍了jQuery选择器及其性能。主要是关于如何正确使用jQuery。由于许多jQuery使用围绕选择器的旋转,因此文章花费了一些时间。

基本上几件事情要记住:

  • 如果您正在寻找性能,用途选择该委托给本地的DOM检查方法(getElementByIdgetElementsByTagName
  • 的缓存结果
  • 伪选择器可能会导致性能下降。
+0

有一个问题,通过这个,你的意思是在元素上使用id或使用getElementById? – 2012-06-29 12:49:52

+0

有一些委托给本地DOM检查方法的jQuery选择器。文章详细介绍了这一点。所以如果你有一个最终委托给'getElementById'的选择器,那么它的执行速度会更快。 – 2012-06-29 15:23:54

0

这些文章没有解决的一件事是你的出发点是什么。如果您从整个DOM树开始,那么这些文章实际上是有用的。

但是,如果你有一个元素开始,它取决于你的搜索。我的大部分动态JavaScript与MVC模板都倾向于抓取动作所在的元素,然后搜索父对象。这消除了在随机生成容器时唯一命名容器的需要 - 从动态开发的角度来看,容易得多。

尽管搜索近父节点的速度可能不如搜索ID快,但与生成和跟踪多个唯一ID的时间和/或性能相比,性能应该可以忽略不计。

随着一切的发展,“它取决于”将统治在这里。

0

我注意到很多这些类型的问题仅限于不同的jQuery选择器之间的性能比较。 我最近遇到一篇文章,它比较了jQuery选择器和本机的Javascript对应器。

这可能听起来很麻烦,但性能增益相当可观。实际上超出了我的想象。

文章:这种嘶嘶声已经使用`querySelectorAll()`相当长的一段 ​​