jQuery的构造函数

来源:互联网 发布:jquery清空数据 编辑:程序博客网 时间:2024/05/22 07:40

// jQuery的构造函数;
var jQuery = function( a, c ) {
    
// $(document).ready()的简写形式,只有在$(function(){...})下才会执行;
    if ( a && typeof a == "function" && jQuery.fn.ready ) return jQuery(document).ready(a);

    
// 确保参数a非空,默认值为document;
     a = a || jQuery.context || document;

    
// 如果参数a是jQuery对象(a.jquery="1.0.3"),则克隆一个与a相同的jQuery对象;
    if ( a.jquery ) return jQuery( jQuery.merge( a, [] ) );

    
// 从给定的参数c(要求c必须是jQuery对象)中查找a;
    if ( c && c.jquery ) return jQuery( c ).find( a );

    
// 如果是初次调用$(),因为在window环境下,所以创建一个新的jQuery对象,如果去掉new则循环执行;
    if ( window == this ) return new jQuery(a,c);

    
// 分析HTML串,如“div<ul>p”;
    if ( a.constructor == String ) {
        
var m = /^[^<]*(<.+>)[^>]*$/.exec( a );
        
if ( m ) a = jQuery.clean( [ m[ 1 ] ] );
     }

    
// 如果参数a是元素数组,则要执行jQery.merge(),否则要执行jQuery.find();
    this.get( a.constructor == Array || a.length && !a.nodeType && a[0] != undefined && a[0].nodeType
        
?  // 处理元素数组;
             jQuery.merge( a, [] )
         :  
// 查找相匹配的元素并保存;
             jQuery.find( a, c ) );

    
// 如果附加了另外的函数,则在每个相匹配的jQuery对象上执行这个函数;
    var fn = arguments[ arguments.length - 1 ];
    
if ( fn && typeof fn == "function" ) this.each( fn );

    
return this;

};
//jQuery的结束;

原创粉丝点击