zepto源碼--qsa--學習筆記

zepto內部選擇器qsa方法的實現。css

簡述實現原理:正則表達式

經過判斷傳入的參數類型:數組

  若是是'#id',則使用getElementById(id)來獲取元素,而且將結果包裝成數組形式;blog

  若是是'.class',則使用getElementsByClassName(class)獲取元素;element

  若是是'tagName',使用getElementsByTagName(tagName)獲取元素;zepto

  若是參數是複雜的css選擇器,則使用element.querySelectorAll(css選擇器)來獲取元素。get

方法開始定義變量備用:class

  found,用於存儲獲取到的元素節點;變量

  maybeID,經過傳入的參數第一個字符是否爲'#',判斷當前的參數是id類型;原理

  maybeClass,參數的第一個字符若是是'.',判斷當前的參數是className;

  nameOnly,無論傳入什麼養的參數,只保留純粹的字母參數,去除掉'.'或者'#';

  isSimple,根據前面定義的simpleSelectorRE正則表達式,判斷當前的參數是否爲簡單的選擇器。

return的結果就是qsa方法的返回結果,依然使用了大量的三元運算符?:,逐行解析以下:

相關文章
相關標籤/搜索