首頁 > web前端 > js教程 > jQuery選擇器原始碼解讀(七):elementMatcher函數_jquery

jQuery選擇器原始碼解讀(七):elementMatcher函數_jquery

WBOY
發布: 2016-05-16 16:06:57
原創
1102 人瀏覽過

要讀懂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參數說明。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板