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, 环视,零宽断言,总之就是匹配个位置,这个位置需要满足某种条件
与神兽党一起成长
be good to each other
推荐阅读
制作一款浏览器插件-查询深圳图书馆馆藏
其他链接地址:[链接][链接]经两周的奋战,终于开发了这一款查询图书馆馆藏的浏览器插件,使用起来非常简单。一、插件说明1)当你打开豆瓣读书页,随便打开一本书的详情,就会在右边栏展示深圳图书馆可借阅的图书...
Honwhy阅读 1.1k
【永久开源】Pear Admin Layui 基于 Layui 的后台管理模板
Pear Admin Layui 是基于 Layui 的后台管理系统模板,扩展Layui原生UI样式,整合第三方开源组件,提供便捷快速的开发方式,延续LayuiAdmin的设计风格,持续完善的样式与组件的维护,基于异步Ajax的菜单构建,相对...
就眠仪式赞 2阅读 7.4k评论 1
jQuery中出现x.easing[this.easing] is not a function的解决办法
x.easing[this.easing] is not a functionQ: 使用jQuery的fadeIn和fadeOut出现以下报错,是由于jQuery版本过高导致,有以下两种解决方案。
泉州牧码人阅读 266
dtcloud使用jquery和echarts
dtcloud中内置了jquery和 Bootstrap的css样式,可以直接使用,并且dtcloud可以解析sass语法,方便大家编写样式,而echarts等文件需要单独加载引入
中亿丰数字科技阅读 213
详细的Ajax简单案例
静态页面表格内容如下一个简单的表格 {代码...} JS调用引入用JqueryGET方式查询POST方式提交 {代码...} 后台代码调用的后台,做了详细的备注。 保存数据位置直接输出返回,没有链接数据库 {代码...}
Json阅读 84
【全套jQuery】学了一下午,我敢说这一定是最好的笔记!
大家好,我是小索奇学了一下午的jQuery,我做出了“最好的笔记”虽说jQuery已经过时了,但一些项目用的也是旧版的技术、很多高校也正在教这一老套的jQuery技术...了解一下有益无害~本篇文章对应jQuery全套教程,文...
玩篮球的啤酒
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。