<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    @OverWrite BlogJava

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      128 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks
    在jQuery.js的構造函數中,充分利用了JavsScript語言的動態性——對行參的類型和個數沒有的嚴格要求,以至于一個函數可以實現多種功能需求,也為JavaScript語言的多態性提供了基礎,在這個構造函數中,提供了六種不同的調用格式(根據官方API文檔),具體如下($ = jQuery):

      1、$(String expr):根據給定的CSS選擇符查找匹配的元素,如$("div>p");
      2、$(Element elem):將給定的DOM元素對象轉換為jQuery對象,如$(document).find("div>p");
      3、$(Array<Element> elems):如$(myForm.elements).hide();
      4、$(Function fn):是$(document).ready()的簡寫模式,如:$( function fn(){ ... } );
      5、$(jQuery obj):如:var div = $("div");   $(div).find("p");
      6、$(String expr, Element context):在context中查找expr,如:$("div", xml.responseXML);

      另外,jQuery中提到了Chainable Methods的思想,也就是調用jQuery中的方法會返回一個jQuery對象,仍然可以繼續調用其中的方法,這樣,就形成了一個“鏈條”,通過“.”一個一個調用下去,這個在構造函數中有具體體現,其中有如下一條語句:

      if( window == this ) return new jQuery( a, c );

      這個就是為了返回一個jQuery對象,在首次調用jQuery( a, c )函數時,this是等于window的,所以每次都會創建一個jQuery對象,更詳細的代碼分析見下:

    // 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的結束;
    posted on 2008-02-20 18:04 vesung 閱讀(6734) 評論(0)  編輯  收藏 所屬分類: Ajax/html
    主站蜘蛛池模板: 免费一本色道久久一区| 日本zzzzwww大片免费| 免费一级毛片免费播放| 亚洲精品永久在线观看| 成人毛片免费播放| 亚洲欧美中文日韩视频| 日韩a级毛片免费观看| 99亚洲精品卡2卡三卡4卡2卡| 永久免费AV无码网站在线观看 | 亚洲性天天干天天摸| a毛片久久免费观看| 亚洲国产精品无码一线岛国| 免费网站观看WWW在线观看| 久久久久久a亚洲欧洲AV| 99热精品在线免费观看| 亚洲精品国产福利在线观看| 无人影院手机版在线观看免费| 色噜噜亚洲男人的天堂| 国产免费午夜a无码v视频| 一级毛片免费在线观看网站| 亚洲色成人中文字幕网站| 免费A级毛片无码A∨中文字幕下载| 亚洲性色成人av天堂| 免费观看的毛片手机视频| 日韩毛片一区视频免费| 国产亚洲一区二区精品| 麻豆视频免费观看| 老司机免费午夜精品视频| 情人伊人久久综合亚洲| 免费在线看v网址| 国产亚洲精品美女| 亚洲AV日韩精品久久久久久久| 免费观看激色视频网站(性色)| 亚洲国产成人综合精品| 自拍偷自拍亚洲精品被多人伦好爽 | 3d动漫精品啪啪一区二区免费| 亚洲国产成人精品激情| 亚洲乱码中文字幕手机在线| 麻豆精品不卡国产免费看| 自拍日韩亚洲一区在线| 亚洲一区二区三区无码影院|