首页
学习
活动
专区
工具
TVP
发布

jQuery选择器Sizzle原理分析(下)

拥有号称当时业界最快的DOM选择器Sizzle,那么为什么他能自称是最快呢?让我们来分析一下Sizzle.js的源码,了解他的设计精妙之处。...正常看起来是这样的,我们对每个种子进行边解析边分析的过程符合要求,但是Sizzle做了更进一步的处理,通过空间换时间的方式,提高了查询性能,他采用了一种叫先编译后执行的过程。...最后对setMatchers和elementMatchers执行matcherFromGroupMatchers方法。...在Classe前面使用Tags:因为getElementsByTagName方法是第二快的查询方法 3....在选择器最后尽量指定seed元素(千万不能用*):因为Sizzle会从最后的选择符开始寻找符合条件的seed集合 4. 尽量使用父子查询来代替后代查询:后代查询需要循环查找,父子查询范围小很多。

70820
您找到你想要的搜索结果了吗?
是的
没有找到

「理论」jQuery选择器Sizzle原理分析(上)

拥有号称当时业界最快的DOM选择器Sizzle,那么为什么他能自称是最快呢?让我们来分析一下Sizzle.js的源码,了解他的设计精妙之处。...二、Sizzle的特别之处 首先介绍下jQuery选择器模块,就是Sizzle选择器,他的网址是http://sizzlejs.com/,如果你只需要进行文档节点的查询,可以直接引入Sizzle的文件就可以了...Sizzle选择器有哪些特点呢? 1. 高效,Sizzle通过很多方法来实现了极致的访问速度,为我们搜索DOM节点提供了一个很好的指导,号称是当时最快的DOM选择器引擎。 2....四、Sizzle框架设计思路分析 Sizzle快具体在哪些原因呢,主要从几个角度来分析 1....然后我们需要把Sizzle查询的整体思路给画出来,把作者的设计思路画出来,再分析源码就清晰很多。

1K10

jQuery源码研究:选择器

var Sizzle = (function(window){ // 具体实现暂略... })(window) css选择器的具体实现是一个匿名自执行函数,传入参数为window对象。...函数顶部定义若干变量,包括本地文档变量、特定实例数据和特定实例方法,此外还定义了一些为选择器字符串服务的正则表达式。数量太多就不一一列举了,感兴趣的可以自己去看源码吧。...方法的主体从行715开始直到结束,定义了Sizzle构造函数,若干工具方法和Sizeele静态方法及属性,概览看下图,由于内容太多,只截部分: ?...1、Sizzle构造函数: function Sizzle( selector, context, results, seed ){ var m, i, elem, nid, match, groups...return select( selector.replace( rtrim, "$1" ), context, results, seed ); } Sizzle函数是整个css选择器的入口函数

56720

jQuery源码解析之detach()empty()remove()unwrap()

remove() 方法,并且只传了两个参数this、selector 第三个参数是 keepData,即是否保留被移除元素的事件和数据,没有传参即默认false,在下面的 detach() 方法也是调用的...remove() 方法,并且第三个参数传了 true detach: function( selector ) { return remove( this, selector, true...nodes 是经过处理后得到的要被移除的节点集合 ② 循环 nodes,依次去除 nodes[i] 的事件和数据 ③ 找到 nodes[i] 的父节点,并调用原生JS的 removeChild() 方法...,就是返回所有 标签中,id='pTwo' 的元素节点的集合,filter() 里面最后还调用了jQuery.find.matchesSelector()和jQuery.find.matches() 方法...,这两个方法内都会调用 Sizzle()方法,而Sizzle()内调用了 select() 方法,select() 比较复杂,本文暂不贴码解析。

1.5K10
领券