15

例如,当我们使用 时$('div span'),jQuery 是如何为我们做这样的搜索的?

它是先搜索span元素还是先搜索div

好像jQuery官网对这些东西没有解释;它只是向我们展示了通过 API 可以使用哪些功能。

我想知道每种类型的 jQuery 选择器是如何实现的,所以我可以选择最好的选择器来使用。

你知道我在哪里可以得到这样的信息吗?

4

5 回答 5

7

概括地说,你需要知道的:

  1. jQuery从右到左读取选择器。
  2. 使用准确的 ID 最快,其次是使用准确的标签名称,因为它们使用优化的 JavaScript 原生方法。
  3. 原生 CSS 选择器比jQuery 选择器:first-child更快。:first

您也可以阅读官方 Sizzle 文档,但它并没有真正讨论优化技术。

于 2012-07-24T13:24:00.430 回答
4

它首先搜索span元素。它将选择器解析为:

  1. 任何带有 tagName = span 的元素
  2. 有一个带有 tagName = div 的祖先

对于第一部分,它可以使用该getElementsByTagName方法查找所有span元素,然后它必须遍历每个元素的祖先以查找div元素。

于 2012-07-24T14:03:36.423 回答
0

寻找最简单的地方是直接从源头阅读。从 jquery 站点下载 uncompresserd 源并从原始源中读取它的作用和顺序。

http://jquery.com/download/

于 2012-07-24T13:19:57.040 回答
0

正如@Juhana所评论的,如果您想了解 jQuery 用于根据其选择器选择对象的具体方法,请查看 github 存储库:

https://github.com/jquery/jquery/

或者,查看未压缩的 jQuery 下载中提供的源代码:

http://jquery.com/download/

如果您只想知道有哪些不同的选择器可供您使用,jQuery 在这里提供了它们的列表:

http://api.jquery.com/category/selectors/

于 2012-07-24T13:20:23.387 回答
0

它们是从右到左解析的。

请参阅http://csswizardry.com/2011/09/writing-efficient-css-selectors/为什么浏览器从右到左匹配 CSS 选择器?

于 2012-07-24T13:22:09.327 回答