study
study copied to clipboard
jQuery对象之选择器
$('.test')执行流程
jQuery = function( selector, context ){
return new jQuery.fn.init( selector, context );
}
jQuery.fn = {
pushStack: function( elems ){
var ret = jQuery.merge( this.constructor(), elems );
ret.prevObject = this;
ret.context = this.context;
return ret;
},
merge: function( first, second ){
var len = second.length,
j = 0, i = first.length;
for ( ; j < len; j++ ) {
first[ i++ ] = second[ j ];
}
first.length = i;
return first;
}
};
var rootjQuery = jQuery( document );
jQuery.fn.init = function( selector, context ){
//handler $( expr, $(...) )
return ( context || rootjQuery ).find( selector );
//handler $( DOMElement )
this.context = this[0] = selector;
this.length = 1;
return this;
};
jQuery.fn.init.prototype = jQuery.fn;
jQuery.fn.extend({
find: function( selector ){
var i,len = this.length,ret = [],self = this;
for ( i = 0; i < len; i++ ){
jQuery.find( selector, self[ i ], ret );
}
ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
ret.selector = this.selector ? this.selector + " " + selector : selector;
return ret;
}
})
jQuery.find = Sizzle;
function Sizzle( selector, context, results, seed ){
context = context || document;
results = results || [];
m = match[3];
//m = '.test'
push.apply( results, context.getElementsByClassName( m ) );
return results;
}