jQuery Sizzle.find [ 源碼分析 ]

來源:互聯網
上載者:User

jQuery Sizzle.find [ 源碼分析 ]

Sizzle.find = function( expr, context, isXML ) {var set, i, len, match, type, left;//expr是否為空白if ( !expr ) {return [];}for ( i = 0, len = Expr.order.length; i < len; i++ ) {type = Expr.order[i];//根據Expr.order,即Sizzle.selectors.order 的四種類型:ID,CLASS,NAME,TAG//與leftMatch確定 expr 的類型if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {//left 官方說是為了確定之後的運算式是否有被轉義,//人個認為這裡的left基本沒有意義left = match[1];match.splice( 1, 1 );if ( left.substr( left.length - 1 ) !== "\\" ) {//對match[1] 中的進行再次轉換,如 \: 轉義為 : ,\. 轉為 .match[1] = (match[1] || "").replace( rBackslash, "" );//針對不同的type調用不同的find方法,返回查詢結果,對應的元素集合set = Expr.find[ type ]( match, context, isXML );//查詢結果不為空白,那麼刪除掉已經查詢過的運算式if ( set != null ) {expr = expr.replace( Expr.match[ type ], "" );break;}}}}//如果結果為空白,那麼採用如下方式尋找if ( !set ) {set = typeof context.getElementsByTagName !== "undefined" ?context.getElementsByTagName( "*" ) :[];}//返回臨時結果return { set: set, expr: expr };};

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.