study icon indicating copy to clipboard operation
study copied to clipboard

jQuery对象之选择器

Open 24wangchen opened this issue 10 years ago • 0 comments

$('.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;
}

24wangchen avatar Apr 14 '15 09:04 24wangchen