例如,当我们使用$('div span')
时,jQuery如何为我们做这样的搜索?如何了解jQuery选择器如何在幕后工作?
是否首先搜索span
元素或div
?
看来jQuery官方网站对这些东西没有解释;它只是告诉我们通过API可以使用哪些功能。
我想知道每个类型的jQuery选择器是如何实现的,所以我可以选择最好的选择器来使用。
你知道我在哪里可以得到这样的信息吗?
例如,当我们使用$('div span')
时,jQuery如何为我们做这样的搜索?如何了解jQuery选择器如何在幕后工作?
是否首先搜索span
元素或div
?
看来jQuery官方网站对这些东西没有解释;它只是告诉我们通过API可以使用哪些功能。
我想知道每个类型的jQuery选择器是如何实现的,所以我可以选择最好的选择器来使用。
你知道我在哪里可以得到这样的信息吗?
寻找最简单的地方就是直接从源头上读取。从jquery站点下载未压缩的源代码,并从原始资源中读取它执行的操作和顺序。
由于@Juhana曾评论说,如果你想知道具体的方法jQuery使用基于其选择器来选择对象,看看GitHub的库:
https://github.com/jquery/jquery/
或者,查看在源代码中可用的未压缩的jQuery下载:
如果你只是想知道什么不同的选择可供选择,这里的jQuery他们提供的名单:
从广义上讲,你需要知道:
:first-child
这样的原生CSS选择器是faster than jQuery selectors就像:first
。您也可以阅读official Sizzle documentation,但它没有真正讨论优化技术。
首先搜索span
元素。它解析选择为:
对于第一部分,它可以使用getElementsByTagName
方法,找到所有span
元素,那么它必须循环遍历每个的祖先以寻找div
元素。
明确的答案在这里:https://github.com/jquery/jquery/ – JJJ 2012-07-24 13:18:40
检查jQueru源代码http://code.jquery.com/jquery-latest.js – Shyju 2012-07-24 13:19:06
而在特定选择器的情况下,最终的答案经常出现在这里:https://github.com/jquery/sizzle/ – 2012-07-24 13:19:18