如何了解jQuery选择器如何在幕后工作?
例如,当我们使用$('div span')
,jQuery如何对我们进行搜索?
它首先搜索span
元素还是div
?
似乎jQuery官方网站对这些事情没有任何解释; 它只是向我们展示了API提供的function。
我想知道每种类型的jQuery选择器是如何实现的,所以我可以选择要使用的最佳选择器。
你知道我在哪里可以得到这样的信息吗?
从广义上讲,您需要了解的内容:
- jQuery 从右到左读取选择器。
- 使用确切的ID是最快的 ,然后使用精确的标记名称,因为它们使用优化的JavaScript本机方法。
- 原生CSS选择器如
:first-child
比jQuery选择器更快,比如:first
。
您还可以阅读官方的Sizzle文档 ,但它并没有真正讨论优化技术。
它首先搜索span
元素。 它将选择器解析为:
- tagName = span的任何元素
- 拥有tagName = div的祖先
对于第一部分,它可以使用getElementsByTagName
方法来查找所有span
元素,然后它必须遍历每个元素的祖先以查找div
元素。
最简单的地方是直接从源头阅读。 从jquery站点下载uncompresserd源代码,并从原始源读取它的作用和顺序。
正如@Juhana评论的那样,如果你想知道jQuery基于其选择器选择对象的具体方法,请查看github存储库:
https://github.com/jquery/jquery/
或者,查看未压缩的jQuery下载中可用的源代码:
如果您只是想知道哪些不同的选择器可用,jQuery在这里提供了它们的列表:
它们是从右到左解析的。
请参阅http://csswizardry.com/2011/09/writing-efficient-css-selectors/以及为什么浏览器从右到左匹配CSS选择器?