Sizzle 官方API翻译
Sizzle源码解析[原创内容,欢迎转载,如有错误,概不负责~~]
Sizzle官方文档上说,Sizzle Api由三个部分构成。
- Public API - 用户使用
- Extension API - 用于修改定制选择器引擎
- Internal API - 引擎内部使用
下面分别列举一下各部份的API
-
Public API
Sizzle(String selector[, DOMNode context[, Array results]])
- 查找elements的主函数,如果浏览器支持
querySelectorAll
的话,就会调用该函数。
- 返回值(Array) - 选择器找到的所有的元素
- 参数说明:
- selector - 一个 css 选择器
- context - 一个元素、文档或文档碎片作为上下文,用来查找元素。
- results - 一个Array对象或者类Array对象。用于添加Sizzle选择的结果。这里定义了Jquery中“array-like object”:
- 有一个正数的
length
属性。 - 有一个
push
方法。
- 有一个正数的
Sizzle.matchesSelector(DOMElement element, String selector)
- 如果指定的element,能通过selector找到,则返回true,否则返回false。如果浏览器支持原生的
Elements.matchesSelector
,
就使用原生的。
- 返回值(Boolean)
- 参数说明:
- element - 需要测试的element
- selector - 一个css选择器
Sizzle.matches(String selector, Array<DOMElement> elements)
- 从指定的结果集中筛选出与selector匹配的结果并返回。
- 返回值(Array)
- 参数说明:
- selector - css selector
- elements - DOMElement数组
- Extension API
Sizzle.selectors.match.NAME = RegExp
This contains the regular expressions used to parse a selector into different parts,
to be used for finding and filtering. The name of each of the regular expressions
should correspond to the names specified in theSizzle.selectors.find
andSizzle.selectors.filter
objects.该属性包含的正规表达式用于将一个selector解析成不同的部份,用于查找和过滤。每一个正则表达式的名字
都应对于Sizzle.selectors.find
和Sizzle.selectors.filter
对象中指定的名称。Finding
如果要新增一个find函数:
- 正则表达式必须添加到
match
对象上。 - 必须定义一个
find
函数 "|" + NAME
必须附加到Sizzle.selectors.order
Sizzle.selectors.find.NAME = function(match, context, isXML) {}
A method for finding some elements on a page.
The specified function will be called no more than once per selector.该方法用于在一个page上查找一些elements.单个selector调用指定的函数的次数不会超过一次。
参数说明:
match
是一个查找指定的selector返回的结果集context
是一个DOMElement或DOMDocument,指定将要进行选择的上下文isXML
是一个Boolean值。表明函数当前操作的是否是一个XML文档
Filtering
定义一个新的过滤表达式:
- 正则表达式必须添加到
match
对象上 - 过滤函数必须添加到
filter
对象上 - 可以选择在
preFilter
对象上定义一个函数
Extension API 先翻译到这里。我自己都云里雾里不知道这些做什么用。看了源码之后回头再看这些。
- Internal API
功能性的操作应该通过访问
Public
和Extension
API.Internal API
只是给内部调用。
已经暴露给edge cases[边缘案例]
(http://en.wikipedia.org/wiki/Edge_case)
Sizzle.selectors.cacheLength
Sizzle内部用于缓存编译过的selector函数和token对象。长度默认50,可以设置为任意正整数。
Sizzle.compile(selector)
该方法用于解析selector函数,并缓存下来,用于后面调用。返回一个函数。