jQuery選取器代碼詳解(七)——elementMatcher函數,jqueryelement

來源:互聯網
上載者:User

jQuery選取器代碼詳解(七)——elementMatcher函數,jqueryelement

要讀懂Sizzle的Compile執行過程,首先需要弄清楚涉及的各個子程式的功能和關鍵變數和作用,我將逐一對jQuery-1.10.2版本的Compile代碼進行說明,望能給予大家協助。

elementMatcher(matchers)

1、源碼

function elementMatcher(matchers) {return matchers.length > 1 ? function(elem, context, xml) {var i = matchers.length;while (i--) {if (!matchers[i](elem, context, xml)) {return false;}}return true;} : matchers[0];}

2、功能

該函數返回一個函數,用來判定傳入的elem是否符合匹配執行函數數組matchers,若不滿足返回false,否則返回true。

若matchers僅有一個元素,則返回該元素本身,否則返回一個新函數——即代碼中的function(elem, context, xml)函數。

返回函數效果有點類似於context.filter(selectors),當然,其結果僅僅返回true或false,而非jQuery對象。

3、參數

matchers——數組,每個元素都是非偽類的匹配器執行函數。例如:在實際執行過程中,div.map span:lt(10),其中div和,map的匹配執行函數就會作為matchers的兩個元素傳入elementMatcher函數來過濾span節點的父節點是否滿足要求。

4、返回函數

4.1 若matchers多於1個元素,則返回如下函數:

function(elem, context, xml) {var i = matchers.length;while (i--) {if (!matchers[i](elem, context, xml)) {return false;}}return true;}
4.1.1 功能

從matchers最後一個元素到第一個元素依次調用,以匹配傳入的elem節點是否滿足要求,全部滿足返回true,否則返回false。

4.1.2 參數

elem——待檢查的單個節點元素。

context——執行整個選取器字串匹配的上下文節點,大部分時候是沒有用途。

xml——當前搜尋對象是HTML還是XML文檔,若是HTML,則xml參數為false。

4.2 若matchers只有1個元素,則返回該元素本身。

4.2.1 功能

檢查傳入的elem是否與選取器匹配,若匹配返回true,否則返回false。

4.2.2 參數

同4.1.2參數說明。

jQuery選取器代碼詳解(一)——Sizzle方法

jQuery選取器代碼詳解(二)——select方法

jQuery選取器代碼詳解(三)——tokenize方法

jQuery選取器代碼詳解(四)——Expr.preFilter

jQuery選取器代碼詳解(五)——執行個體說明tokenize的解析過程

jQuery選取器代碼詳解(六)——Sizzle選取器匹配邏輯分析

jQuery選取器代碼詳解(七)——elementMatcher函數

jQuery選取器代碼詳解(八)——addCombinator函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.