jQuery是如何使用Sizzle的?

发布于 2022-09-03 08:00:37 字数 1131 浏览 17 评论 0

在阅读jquery源码时,有些疑惑,jquery通过init()方法来构建新的jquery对象,我的理解是使用所有通过jQuery(" ")或者$("")方法创建的,都是新的jquery对象,这个字符串""作为selector传入init函数。

init: function( selector, context, rootjQuery ) {
//do something
}

在这段代码中,init()方法内对selector做了些处理,但是感觉只是匹配了简单的选择情况 如<>标签和#id
没有sizzle的css选择器那样强大。所以有一个很大的疑问,**jquery是怎样调用sizzle引擎的呢?

我找到jqeury中sizzle的部分,在最后一行发现下面的代码

(function( window, undefined ) {
//很长 略
jQuery.find = Sizzle;
//略
})( window );

然后找回init()函数里,使用了find的代码部分如下,

 init: function( selector, context, rootjQuery ) {
      //略
      } else if ( !context || context.jquery ) {
                    return ( context || rootjQuery ).find( selector );
    
                // HANDLE: $(expr, context)
                // (which is just equivalent to: $(context).find(expr)
                } else {
                    return this.constructor( context ).find( selector );
                }

所以这里应该就是平时使用最多的css选择器情况 $("div.a p.b")这样的形式
想请教一下,我这样理解对吗?另外这段是如何对应sizzle的css选择器的。。平常写代码时,几乎只用到过$("")传入selector一个参数的情况,这个context和rootjQuery不太明白。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终难遇 2022-09-10 08:00:37

selector是选择器,context是html标签,rootJquery是$()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文