zepto内部选择器qsa方法的实现。
简述实现原理:
通过判断传入的参数类型:
如果是'#id',则使用getElementById(id)来获取元素,并且将结果包装成数组形式;
如果是'.class',则使用getElementsByClassName(class)获取元素;
如果是'tagName',使用getElementsByTagName(tagName)获取元素;
如果参数是复杂的css选择器,则使用element.querySelectorAll(css选择器)来获取元素。
方法开始定义变量备用:
found,用于存储获取到的元素节点;
maybeID,通过传入的参数第一个字符是否为'#',判断当前的参数是id类型;
maybeClass,参数的第一个字符如果是'.',判断当前的参数是className;
nameOnly,不管传入什么养的参数,只保留纯粹的字母参数,去除掉'.'或者'#';
isSimple,根据前面定义的simpleSelectorRE正则表达式,判断当前的参数是否为简单的选择器。
return的结果就是qsa方法的返回结果,依然使用了大量的三元运算符?:,逐行解析如下: