最近开始学习Zepto源码,分享一下,一起学习。前端新人,技术差,多多见谅参考gitbook地址感谢作者贡献zepto的css选择器zepto.qsa大家都知道很多情况下,我们使用$来获取DOM对象,这有很大的帮助使用zepto.qsa。getselector[0]ifIDgetElementByIdprocessifcalssgetElementsByClassNameiftagNamegetElementsByTagName处理的不仅是selectorquerySelectorAll处理最后一次选择还调用querySelectorAll因为querySelectorAll太耗性能参考静态nodelistvs.动态nodelistzepto.qsa=function(element,selector){varfound,maybeID=selector[0]=='#',maybeClass=!maybeID&&selector[0]=='.',nameOnly=maybeID||也许类?selector.slice(1):selector,//确保仍然检查1个字符的标签名称isSimple=simpleSelectorRE.test(nameOnly)return(element.getElementById&&isSimple&&maybeID)?//SafariDocumentFragment没有getElementById((found=element.getElementById(nameOnly))?[found]:[]):(element.nodeType!==1&&element.nodeType!==9&&element.nodeType!==11)?[]:slice.call(isSimple&&!maybeID&&element.getElementsByClassName?//DocumentFragment没有getElementsByClassName/TagNamemaybeClass吗?element.getElementsByClassName(nameOnly)://如果简单,可以是类element.getElementsByTagName(selector)://或者标签element.querySelectorAll(selector)//或者不简单,需要全部查询)}zepto.Z函数返回newZ函数.Z=function(dom,selector){returnnewZ(dom,selector)}Z函数返回函数Z(dom,selector){vari,len=dom?dom.length:0for(i=0;i
