[百度分享]初探 jQuery 的 Sizzle 选择器(一)

xswwu 2010-09-26 02:04:02
加精
这是一篇关于介绍jQuery Sizzle选择器的文章,由我和obility共同完成。在文中,我们试图用自己的语言配以适量的代码向读者展现出Sizzle在处理选择符时的流程原理,以及末了以少许文字给你展示出如何借用Sizzle之手实现自定义选择器(也许更标准的叫法叫做过滤符)和它与YUI 选择器的大致比较。

前序
jQuery相比1.2的版本,在内部代码的构造上已经出现了巨大的变化,其之一便是模块的分发.我记得09年在jquery 9月开的一次大会上 john放出的一张ppt上 也指出了当前的jquery下一步目标,不仅仅是除了sizzle选择器的分离,届时core,attribute,css以及manipulation,包括event也都会独立成单独的js文件.(1.4的文件结构,其实已经分成单独的16个模块的组成)
随着jQuery被用来构建web app的场合愈来愈多,它的性能自然受到了大部分开发者的高度关注,它的内部实现机理又是如何,比如选择器的实现。
Sizzle,作为一个独立全新的选择器引擎,出现在jQuery 1.3版本之后,并被John Resig作为一个开源的项目,可以用于其他框架:Mool, Dojo,YUI等。
好了,现在来看为什么Sizzle选择器如此受欢迎,使它能够在常用dom匹配上都快于其他选择器而让这些框架们都垂青于它。

概要
一般选择器的匹配模式(包括jq1.2之前),都是一个顺序的思维方式,在需要递进式匹配时,比如$(‘div span’) 这样的匹配时,执行的操作都是先匹配页面中div然后再匹配它的节点下的span标签,之后返回结果。
Sizzle则采取了相反Right To Left的实现方式,先搜寻页面中所有的span标签,再其后的操作中才去判断它的父节点(包括父节点以上)是否为div,是则压入数组,否则pass,进入下一判断,最后返回该操作序列。
另外,在很多细节上也进行了优化。
...全文
1485 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
sstar520 2010-10-18
  • 打赏
  • 举报
回复
每天顶一顶
yml73 2010-10-18
  • 打赏
  • 举报
回复
我也是为积分来
lys013 2010-10-18
  • 打赏
  • 举报
回复
我晕,文章都没写完呀,还有呢?
love1072393457 2010-10-17
  • 打赏
  • 举报
回复
为积分而来!
q280085328 2010-10-16
  • 打赏
  • 举报
回复
关注学习下
雨枫 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 tom_221x 的回复:]
一个超越jquery的选择器引擎,纯js编写。
在线测试:http://mojo-js.appspot.com/ 见真相
[/Quote]
我测试的没有jquery的好啊
leavesflyin 2010-10-15
  • 打赏
  • 举报
回复
标题:文字信息处理及编辑3000/月

本公司现承接一批商务旧书籍,文字手写资料,
现须要从新整理成为电子文档,
须招若干名有充足时间的资料整理员
具体招聘事宜请发个人简历到我司邮箱或登陆公司网站了解详情 www.59791.com

(请放心,本公司所有招聘职位不需要交纳任何费用)
公司每天工资发放记录:http://www.59791.com/gongzi.htm


leavesflyin 2010-10-15
  • 打赏
  • 举报
回复
标题:文字信息处理及编辑3000/月

本公司现承接一批商务旧书籍,文字手写资料,
现须要从新整理成为电子文档,
须招若干名有充足时间的资料整理员
具体招聘事宜请发个人简历到我司邮箱或登陆公司网站了解详情 www.59791.com

(请放心,本公司所有招聘职位不需要交纳任何费用)
公司每天工资发放记录:http://www.59791.com/gongzi.htm


hwuaxj_11 2010-10-15
  • 打赏
  • 举报
回复
这个需要
gohands 2010-10-15
  • 打赏
  • 举报
回复

每天回帖即可获得10分可用分
whpeng825 2010-10-15
  • 打赏
  • 举报
回复
rrrrrrrrrr
chenndd 2010-10-15
  • 打赏
  • 举报
回复
单纯来学习··
wangbin20001216 2010-10-15
  • 打赏
  • 举报
回复
昨天才听说JQuery,学习了.
dddggf333 2010-10-15
  • 打赏
  • 举报
回复
頂頂頂頂頂頂頂頂頂
chenge126 2010-10-15
  • 打赏
  • 举报
回复
郁闷,没分发帖~~···············
supervaluer 2010-10-14
  • 打赏
  • 举报
回复
学习中。。。
you00006 2010-10-14
  • 打赏
  • 举报
回复
学习了
ajccom 2010-10-14
  • 打赏
  • 举报
回复
LZ下文呢!!!
tangweiwei0000 2010-10-14
  • 打赏
  • 举报
回复
至今还没见过这个选择器啊,学习了
IThurricane 2010-10-14
  • 打赏
  • 举报
回复
顶起~~~~~~~
加载更多回复(29)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧