jQuery是如何使用Sizzle的?
在阅读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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
selector是选择器,context是html标签,rootJquery是$()