摘要: 查找的入口对应的是Sizzle.find方法,Sizzle.find = function( expr, context) {}expr :查找的表达式context :查找的范围find的步骤第一步:判断主要集合,方法说过了,依次匹配,顺序就是ID --> NAME --> TAG第二步:(1)当有类型被匹配时,调用相应的方法,获取集合set。(2)当ID,NAME,TAG全部不匹配时,获取context范围内的全部元素集合set第三步:去除expr中已经匹配的部分,返回结果{expr : expr,set : set}因此,Sizzle.find的大致代码流程是Sizzle.f 阅读全文
posted @ 2012-02-15 14:26 西山 阅读(2574) 评论(0) 推荐(1) 编辑
摘要: 主要流程与正则表达式分块var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;这个正则比较长,主要是用来分块和一步预处理。1、2、3、4、'div#test + p > a.tab' --> ['div#test','+ 阅读全文
posted @ 2012-02-15 13:46 西山 阅读(5393) 评论(3) 推荐(3) 编辑
摘要: 大家都知道,Sizzle是jQuery的御用选择器引擎,是jQuery作者John Resig写的DOM选择器引擎,速度号称业界第一。另外,Sizzle是独立的一部分,不依赖任何库,如果你不想用jQuery,可 以只用Sizzle。所以单独拿出来特别对待。在Prototype1.7中,选择器也采用了Sizzle,不过版本有点老,所以我去Sizzle网站搞了一份新的 下来,于是下面分析的时候使用的是最新版的Sizzle.js预先说明在分析初期为了保证各个浏览器的结果一致,不考虑原生getElementsByClass以及querySelectorAll的影响,同时忽略XML类型,因此作一下处.. 阅读全文
posted @ 2012-02-15 13:45 西山 阅读(20703) 评论(4) 推荐(9) 编辑