好了有了之前的词法分析过程,现在我们来到select函数来,这个函数的整体流程,前面也大概说过: 1. 先做词法分析获得token列表 2. 如果有种子集合直接到编译过程 3. 如果没有种子集合并且是单组选择符(没有逗号) (1)尝试缩小上下文:如果第一个token是ID选择符,则会执行Expr.f ...
分类:
其他好文 时间:
2017-04-05 00:59:28
阅读次数:
376
我也看过很多Sizzle源码分析的博客,伪类分割器setMatcher介绍的比较少。但是本人认为这是一个比较重要的难点,我第一遍看源码的时候也忽略了。现在回来看第二遍,一定要把这个东东弄懂。 a. 伪类分割器setMatcher 伪类分隔器对伪类选择器进行分隔处理,返回处理后的最终匹配器。 ...
分类:
Web程序 时间:
2015-11-07 20:27:01
阅读次数:
251
var Sizzle = function( selector, context, results, seed ) {
//context 默认为document,可以人为指定
results = results || [];
context = context || document;
var origContext = context;
//判断文档节点
if ( context...
分类:
Web程序 时间:
2014-08-28 16:19:21
阅读次数:
224
Sizzle.find = function( expr, context, isXML ) {
var set, i, len, match, type, left;
//expr是否为空
if ( !expr ) {
return [];
}
for ( i = 0, len = Expr.order.length; i < len; i++ ) {
type = Expr...
分类:
Web程序 时间:
2014-08-28 16:16:59
阅读次数:
236
最近一直在研究Sizzle选择器,对于其中的原理确实不得不佩服!
Sizzle中的filter方法,主要负责块表达式过滤元素集合,在方法内部会调用Sizzle.selector.fitler方法执行过滤操作。
Sizzle.filter主要分5个关键步骤:
1 使用LeftMatch确定表达式类型。
2 调用Sizzle.selectors.preFilter预过虑函数,执行过滤前的修正。...
分类:
其他好文 时间:
2014-08-27 22:05:34
阅读次数:
207