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 the Sizzle.selectors.find
    and Sizzle.selectors.filter objects.

    该属性包含的正规表达式用于将一个selector解析成不同的部份,用于查找和过滤。每一个正则表达式的名字
    都应对于Sizzle.selectors.findSizzle.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

功能性的操作应该通过访问PublicExtension API. Internal API 只是给内部调用。
已经暴露给edge cases[边缘案例](http://en.wikipedia.org/wiki/Edge_case)

  • Sizzle.selectors.cacheLength

Sizzle内部用于缓存编译过的selector函数和token对象。长度默认50,可以设置为任意正整数。

  • Sizzle.compile(selector)

该方法用于解析selector函数,并缓存下来,用于后面调用。返回一个函数。

posted @ 2015-06-11 11:09  _124  阅读(181)  评论(0编辑  收藏  举报