Sizzle.selectors.match/leftMatch
对象Sizzle.selectors.match/leftMatch中存放了表达式类型和正则的映射,正则用于确定块表达式的类型,并解析其中的参数。
相关代码如下:
var Expr = Sizzle.selectors = {match : {ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*/,ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+/,CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*\d+)?))\s*\))?/,POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/}
}var origPOS = Expr.match.POS,fescape = function(all, num) {return "\\" + (num - 0 + 1);};for ( var type in Expr.match ) {Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );Expr.leftMatch[ type ] = new RegExp ( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}
我不保证以上代码的正确性。良心起见,解释上面代码的一些难点
\3
,\2
应用前面匹配到的分组(?:)
表示匹配,但不计入分组(?=)
前瞻,look forward, 环视,零宽断言,总之就是匹配个位置,这个位置需要满足某种条件
Sizzle.selectors.match/leftMatch相关推荐
- Sizzle.selectors.relative [ 源代码分析 ]
1 jQuery 对象Sizzle.selectors.relative中存放了块间关系符和相应的块间关系过滤函数,称为"块间关系过滤函数集" 块间关系符共同拥有4种,其含义和过滤 ...
- jQuery技术内幕:深入解析jQuery架构设计与实现原理1
jQuery技术内幕:深入解析jQuery架构设计与实现原理 高 云 著 图书在版编目(CIP)数据 jQuery技术内幕:深入解析jQuery架构设计与实现原理 / 高云著. -北京:机械工业出版社 ...
- Sizzle 官方API翻译
Sizzle源码解析[原创内容,欢迎转载,如有错误,概不负责~~] Sizzle官方文档上说,Sizzle Api由三个部分构成. Public API - 用户使用 Extension API - ...
- JQuery - Sizzle选择器引擎原理分析
说明:14年学习的jquery源码,搬到这里供大家交流.原文地址:https://segmentfault.com/a/1190000003933990 一.前言 Sizzle原来是jQuery里面的 ...
- Sizzle.filter [ 源码分析 ]
最近一直在研究Sizzle选择器,对于其中的原理确实不得不佩服! Sizzle中的filter方法,主要负责块表达式过滤元素集合,在方法内部会调用Sizzle.selector.fitler方法执行过 ...
- jquery--选择器sizzle源码分析
1 (function( window, undefined ) {2 3 vari,4 cachedruns,//正在匹配第几个元素 5 Expr, //Sizzle.selectors的快捷方式 ...
- jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
之所以把这部分放在这里,是因为这里用到了一些基本API,前一篇介绍过后才能使用. //jQuery通过find方法调用Sizzle引擎 //jQuery通过find方法调用Sizzle引擎 jQuer ...
- jQuery源码学习(5)-Sizzle选择器(1)
1.常见的选择器: #test表示id为test的DOM节点 .aaron 表示class为aaron的DOM节点 nav>li 表示在nav内部子li的样式,而不是所有的后代元素,只是往下一层 ...
- 深入学习jquery源码之jQuery的选择器引擎Sizzle(一)
深入学习jquery源码之jQuery的选择器引擎Sizzle Sizzle是一个纯javascript CSS选择器引擎.jquery1.3开始使用sizzle,Sizzle一反传统采取了相反的Ri ...
最新文章
- linux高可用集群(HA)原理详解
- SpringBoot+Mybatis多模块(module)项目搭建教程
- 线段树--codevs 1690 开关灯
- 1.18.2.10 解释表:Table.explain、物理执行计划等
- JAVA编写的7个规范
- 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)
- mysql中pi是什么意思_MySQL 基础知识与常用命令
- ArcCatalog中将SQLServer中的空间数据导入到Oracle库中
- struts mysql乱码_Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决
- 创业公司专题数据(包含stata多种模型代码)
- 用R语言看武汉市武昌区房租出租情况
- office word doc中无法输入英文双引号
- 华为云账号登录流程和方法
- 深圳高交会ZDNS发布域名服务安全威胁管控系统,为互联网入口保驾护航
- 使用Docker容器,这些错误千万别犯
- ESP8266 Arduino-FLASH按钮电平驱动LED灯翻转
- 【分享】常见的打印机无法共享12个问题汇总
- 如何编写Linux 下的 USB 键盘驱动
- 积分系统对产品的重要性
- 从自动化到智能化,网易杭研的AIOps探索与实践
热门文章
- cad2014打开文件崩溃_CAD玩的再牛,崩溃了咋办?
- iphone储存空间系统怎么清理_教你快速清理 iPhone 系统缓存垃圾,拒绝卡顿!
- php post 微信沙箱,微信支付平台错误:获取沙箱密钥失败,确保交易密钥是
- vscode设置templates_在VScode中创建你的代码模板的方法
- poj 3352Road Construction(无向双连通分量的分解)
- java中的printnb_javaI/O系统笔记
- 重新打开_iPhone 应用停止响应或无法打开的解决办法
- Positional Encodings in ViTs 近期各视觉Transformer中的位置编码方法总结及代码解析 1
- java基础知识点_JAVA基础知识
- 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...