国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery選擇器源碼解讀(七):elementMatcher函數(shù)

2019-11-20 12:49:16
字體:
供稿:網(wǎng)友

要讀懂Sizzle的Compile執(zhí)行過程,首先需要弄清楚涉及的各個(gè)子程序的功能和關(guān)鍵變量和作用,我將逐一對(duì)jQuery-1.10.2版本的Compile代碼進(jìn)行說明,望能給予大家?guī)椭?/p>

elementMatcher(matchers)

1、源碼

復(fù)制代碼 代碼如下:

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、功能

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

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

返回函數(shù)效果有點(diǎn)類似于context.filter(selectors),當(dāng)然,其結(jié)果僅僅返回true或false,而非jQuery對(duì)象。

3、參數(shù)
matchers――數(shù)組,每個(gè)元素都是非偽類的匹配器執(zhí)行函數(shù)。例如:在實(shí)際執(zhí)行過程中,div.map span:lt(10),其中div和,map的匹配執(zhí)行函數(shù)就會(huì)作為matchers的兩個(gè)元素傳入elementMatcher函數(shù)來過濾span節(jié)點(diǎn)的父節(jié)點(diǎn)是否滿足要求。

4、返回函數(shù)

4.1 若matchers多于1個(gè)元素,則返回如下函數(shù):

復(fù)制代碼 代碼如下:

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

4.1.1 功能
從matchers最后一個(gè)元素到第一個(gè)元素依次調(diào)用,以匹配傳入的elem節(jié)點(diǎn)是否滿足要求,全部滿足返回true,否則返回false。

4.1.2 參數(shù)

elem――待檢查的單個(gè)節(jié)點(diǎn)元素。

context――執(zhí)行整個(gè)選擇器字符串匹配的上下文節(jié)點(diǎn),大部分時(shí)候是沒有用途。

xml――當(dāng)前搜索對(duì)象是HTML還是XML文檔,若是HTML,則xml參數(shù)為false。

4.2 若matchers只有1個(gè)元素,則返回該元素本身。
4.2.1 功能
檢查傳入的elem是否與選擇器匹配,若匹配返回true,否則返回false。

4.2.2 參數(shù)
同4.1.2參數(shù)說明。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南汇区| 香河县| 繁昌县| 从化市| 日照市| 贵定县| 惠州市| 宜城市| 延庆县| 恩平市| 河东区| 洞头县| 广南县| 英德市| 曲阜市| 桐城市| 韩城市| 东港市| 凤庆县| 昌宁县| 石阡县| 郎溪县| 商河县| 晋江市| 罗甸县| 阳谷县| 淄博市| 读书| 东乡| 洪雅县| 隆尧县| 云南省| 包头市| 连平县| 涿州市| 大余县| 绥江县| 祁连县| 灵璧县| 云梦县| 上思县|