选择器职责非单一,比较复杂,分情况讨论
字符串
- 进行基础判断,
if(typeof selector === "string") - 使用正则表达式
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/和正则方法regexp.exec
- 当匹配成功时,结果为数组
- 数组第一项,是匹配的字符串
- 数组第二项,是html字符串
- 数组第三项,是
#id - 第二三项没有的时候为空
- 原生语法,
node.ownerDocument获取document元素
$.parseHTML解析
- 现对参数进行处理
- 新的正则表达式
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,只匹配不带有任何子节点的HTML字符串。此时,直接基于上下文创建 - 如果比较复杂,利用
documentFragment创建文档碎片,然后返回childNodes子节点集合
类名和函数
- 如果是类名,内部其实使用的是
find方法 - 如果是函数,每部会调用
ready方法
选择器和对象
- 将对象添加到选择器选中的Node元素上








网友评论