javascript - jQuery是如何使用Sizzle的?
大家讲道理
大家讲道理 2017-04-11 11:39:32
[JavaScript讨论组]

在阅读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选择器情况 $("p.a p.b")这样的形式
想请教一下,我这样理解对吗?另外这段是如何对应sizzle的css选择器的。。平常写代码时,几乎只用到过$("")传入selector一个参数的情况,这个context和rootjQuery不太明白。。。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号