这是一篇关于介绍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,进入下一判断,最后返回该操作序列。
另外,在很多细节上也进行了优化。
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,进入下一判断,最后返回该操作序列。
另外,在很多细节上也进行了优化。
解决方案 »
- jquery blockui 如何支持拖动
- 求高手解决啊!告诉请进IE9 new ActiveXObject("htmlfile")报错
- webbrowser如何修改javascript语句?
- 服务器端radiobutton上的事件
- 紧急援助!!
- 如何固定页面大小
- 一个正则匹配问题 解决不了就失业啦!求救啊 !各位同行好友,快来啊!呜……
- 建议CSDN社区可以察看每个人在各个版块的得分,就想看自己的一样,有利于大家互相了解。支持请进!
- 请教完美动态下拉列表框如何实现数据的接送?工作中,急,请帮忙!
- 请教:如果给另外窗口的text等赋值。
- 为什么js到了火狐就用不了
- 用正则表达式判断输入值的一个问题
在线测试:http://mojo-js.appspot.com/ 见真相
现须要从新整理成为电子文档,
须招若干名有充足时间的资料整理员
具体招聘事宜请发个人简历到我司邮箱或登陆公司网站了解详情 www.59791.com (请放心,本公司所有招聘职位不需要交纳任何费用)
公司每天工资发放记录:http://www.59791.com/gongzi.htm
现须要从新整理成为电子文档,
须招若干名有充足时间的资料整理员
具体招聘事宜请发个人简历到我司邮箱或登陆公司网站了解详情 www.59791.com (请放心,本公司所有招聘职位不需要交纳任何费用)
公司每天工资发放记录:http://www.59791.com/gongzi.htm