摘要: 在上一章中,我们说到在之前的查找阶段我们已经获得了待选集seed,那么这一章我们就来讲如何将seed待选集过滤,以获得我们最终要用的元素。其实思路本质上还是不停地根据token过滤,但compile这个函数将这些matcher(filter生成的闭包过滤函数)给编译成一个函数(这个效率和我们直接使用过滤函数差不多,关键是在后面),再保存这一个函数,以后遇到同样的selector就可以不用再编译,直接调用就可以了。接下来我们看看compile的代码compile = Sizzle.compile = function( selector, group /* Internal Use Only * 阅读全文
posted @ 2014-03-26 10:31 Suprise 阅读(546) 评论(6) 推荐(0) 编辑
摘要: 在用前两篇讲述完正则表达式、初始化、特性检测之后,终于到了我们的正餐——Sizzle工厂函数!Sizzle工厂函数有四个参数,selector:选择符context:查找上下文results:返回的结果数组seed:待选元素,刚开始是undefined,但有的情况下Sizzle会递归调用,故那个时候会将待选元素层层传递当我们要使用Sizzle时,使用频率最高的通常是直接指定单个id、class、tag来获取(通常还指定查找上下文来加速这一过程),而这种情况下Sizzle做了优化,当判断是这三种情况时,直接调用原生API来获取元素。其次,最快的方法莫过于使用querySelectorAll了,也 阅读全文
posted @ 2014-03-26 02:28 Suprise 阅读(606) 评论(0) 推荐(0) 编辑