选择器
2017-11-17 本文已影响0人
我_巨可爱
选择器职责非单一,比较复杂,分情况讨论
字符串
- 进行基础判断,
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元素上