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函数,并缓存下来,用于后面调用。返回一个函数。

转载于:https://www.cnblogs.com/CoinXu/p/4568477.html

Sizzle 官方API翻译相关推荐

  1. 通过 .gitlab-ci.yml配置任务-官方配置文件翻译

    Gitlab CI yaml官方配置文件翻译 通过 .gitlab-ci.yml配置任务 [TOC] 来源:https://github.com/Fennay/git... 此文档用于描述.gitla ...

  2. Android官方文章翻译之管理设备苏醒状态(Managing Device Awake State)(二)

    这是Managing Device Awake State的下半篇,上半篇请看:Android官方文章翻译之管理设备苏醒状态(Managing Device Awake State)(一) 在了解接下 ...

  3. JointJS官方API的个人整理

    由于JointJs官方API是英文,所以学习过程中对此进行部分(没有完全)汉化整理,以及一些个人理解. 锚点anchor 链接锚是一个链接想要到达的点(这意味着连接端点最终未必就落在上面)作为它的端点 ...

  4. 【天池基础知识】直方图,Q~Q图、KDE分布图+对应的官方API文档

    目的 直方图和Q-Q图的目的:是为了看看数据是不是符合正态分布或者是不是对角线分布,这样对数据的采取的时候会更加有效一些(比如那些不太行的数据,偏离太多的数据我们删除,那些分布太高的可以用对数进行降低 ...

  5. Dapper官方教程翻译8:Dapper方法之QueryMultiple(转)

    Dapper官方教程翻译8:Dapper方法之QueryMultiple 2019年02月28日 10:42:22 Day_and_Night_2017 阅读数:120 QueryMultiple方法 ...

  6. python运行界面英文翻译_python使用百度api翻译中英文

    python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...

  7. QQ 一键加群、扫二维码加群 - 腾讯官方API文档接入

    QQ 一键加群.扫二维码加群 - 腾讯官方API文档接入 QQ一键加群功能,腾讯API生成链接和二维码等等 获取地址:腾讯官方API文档接口 使用方法:引入对应的链接即可 这里有生成图片.二维码的功效 ...

  8. 微信公众号官方API开发之配置服务器

    最近进行微信官方API开发,需要知道用户的openid,以及需要扫码传参数,需要进行服务器配置. 1.服务器配置 微信公众号要开通开发者模式,然后在最左下角 开发->基本配置->服务器配置 ...

  9. ExtJS各个版本官方API文档

    ExtJS各个版本官方API文档 官方API地址:https://docs.sencha.com/extjs/6.7.0/index.html 版本切换方式: 官方文档为纯英文文档,需要中文版的朋友可 ...

最新文章

  1. js中的apply()、call() 和 bind()
  2. ROS kinect:OpenNI读取深度图像与彩色图像
  3. centos上那装qq2012
  4. repadmin查看域控之间的复制状态
  5. Vue.js 概述与 MVVM 模式
  6. 微机个人笔记-存储单元编址
  7. 联想e431笔记本更改硬盘模式bios设置的详细教程
  8. 立即修复!微软史上最严重漏洞之一 Netlogon 细节被公开,三秒接管企业网络
  9. spring实现mqtt服务端_SpringBoot--实战开发--MQTT消息推送(六十)
  10. 计算机网络技术论文致谢,路由器论文致谢
  11. 自己动手编译nodemcu固件(ESP8266)
  12. 小甲鱼C语言1-22讲笔记(指针和数组)
  13. 管家婆显示服务器端没有软件狗,管家婆找不到加密狗怎么办.doc
  14. word里双横线怎么打_在word中怎么画直线、双直线、虚线
  15. [常用类]Instant类的使用
  16. 20220119思维导图
  17. Mac Apache php 配置域名
  18. 各种快递查询--Api接口
  19. 深度学习平台——Paddle核心框架介绍
  20. 13_Pinia组件库

热门文章

  1. 纯JS制作的窗户雨滴效果
  2. [Cocoa]深入浅出Cocoa系列
  3. 在Python这条路上踩过的坑(1)
  4. 离线轻量级大数据平台Spark之读取CSV文件实例
  5. Spring的新注解——Configuration、ComponentScan、Bean、Import、PropertySource || spring整合Junit分析
  6. java 接口 实现和继承关系
  7. 搜狗输入法:候选词带符号设置方法。正常打字打出符号,颜文字。
  8. 模拟电路技术之基础知识(五)
  9. CTFshow 文件上传 web167
  10. CTFshow 命令执行 web52