jQuery選擇器源碼解讀(七):elementMatcher函數(shù)
要讀懂Sizzle的Compile執(zhí)行過程,首先需要弄清楚涉及的各個子程序的功能和關鍵變量和作用,我將逐一對jQuery-1.10.2版本的Compile代碼進行說明,望能給予大家?guī)椭?/p>
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、功能
該函數(shù)返回一個函數(shù),用來判定傳入的elem是否符合匹配執(zhí)行函數(shù)數(shù)組matchers,若不滿足返回false,否則返回true。
若matchers僅有一個元素,則返回該元素本身,否則返回一個新函數(shù)——即代碼中的function(elem, context, xml)函數(shù)。
返回函數(shù)效果有點類似于context.filter(selectors),當然,其結果僅僅返回true或false,而非jQuery對象。
3、參數(shù)
matchers——數(shù)組,每個元素都是非偽類的匹配器執(zhí)行函數(shù)。例如:在實際執(zhí)行過程中,div.map span:lt(10),其中div和,map的匹配執(zhí)行函數(shù)就會作為matchers的兩個元素傳入elementMatcher函數(shù)來過濾span節(jié)點的父節(jié)點是否滿足要求。
4、返回函數(shù)
4.1 若matchers多于1個元素,則返回如下函數(shù):
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節(jié)點是否滿足要求,全部滿足返回true,否則返回false。
4.1.2 參數(shù)
elem——待檢查的單個節(jié)點元素。
context——執(zhí)行整個選擇器字符串匹配的上下文節(jié)點,大部分時候是沒有用途。
xml——當前搜索對象是HTML還是XML文檔,若是HTML,則xml參數(shù)為false。
4.2 若matchers只有1個元素,則返回該元素本身。
4.2.1 功能
檢查傳入的elem是否與選擇器匹配,若匹配返回true,否則返回false。
4.2.2 參數(shù)
同4.1.2參數(shù)說明。
- 詳解element-ui日期時間選擇器的日期格式化問題
- 詳解關于element級聯(lián)選擇器數(shù)據(jù)回顯問題
- element-ui 時間選擇器限制范圍的實現(xiàn)(隨動)
- Element UI框架中巧用樹選擇器的實現(xiàn)
- vue2.0 element-ui中el-select選擇器無法顯示選中的內(nèi)容(解決方法)
- Vue Element 分組+多選+可搜索Select選擇器實現(xiàn)示例
- jQuery中元素選擇器(element)簡單用法示例
- jQuery中element選擇器用法實例
- jQuery 屬性選擇器element[herf*=''value'']使用示例
- 基于Element的組件改造的樹形選擇器(樹形下拉框)
相關文章
基于Jquery的跨域傳輸數(shù)據(jù)(JSONP)
基于Jquery的跨域傳輸數(shù)據(jù)(JSONP) ,需要的朋友可以參考下。2011-03-03jQuery實現(xiàn)鼠標經(jīng)過圖片變亮其他變暗效果
jQuery實現(xiàn)的仿商城圖片變亮變暗效果,鼠標懸停圖片之后該圖片變亮,其他圖片變暗。移開鼠標所有圖片變亮,兼容主流瀏覽器,適用瀏覽器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗,有需要的小伙伴可以參考下。2015-05-05js獲取通過ajax返回的map型的JSONArray的方法
下面是js獲取通過ajax返回的map型的JSONArray的詳細代碼,需要的朋友可以參考下2014-01-01jQuery事件綁定on()、bind()與delegate() 方法詳解
這篇文章主要詳細介紹了jQuery事件綁定的三種方法,分別是on()、bind()與delegate(),十分的淺顯易懂,有需要的小伙伴可以參考下。2015-06-06