Sizzle:开源JS选择器,如何自定义选择器

分类:学习笔记 发表时间:2010年08月12日 字体大小:12号14号

早上看了百度泛用户体验博客的博文初探 jQuery 的 Sizzle 选择器,让我对Sizzle选择器的知识又更加地深入了解。之前我就知道jQuery中有一个开源的Sizzle选择器程序,可以独立于jQuery单独使用。而在jQuery中使用到的各种强大的选择器都是通过Sizzle来解析返回值的。

一、Sizzle代码及注册:

在jQuery1.42版本中,Sizzle代码位于 2624行 至 3688行。相比单独的Sizzle.js,在jQuery框架中多了几行代码,将Sizzle注册到jQuery中:

单独的Sizzle.js可以到Github:http://github.com/jeresig/sizzle/blob/master/sizzle.js查看。

二、’:header’的用处:

就在我阅读Sizzle.js的源代码时,发现了’:header’选择器,代码如下(位于3132-3134行):

1
2
3
		header: function(elem){
			return /h\d/i.test( elem.nodeName );
		}

这个选择器在正常的CHM API文档中没有给出,估计大家也很少用到过(我自己就没用过)。它的用处是匹配(h1-h6)标题标签,知道有这个选择器了,以后工作中也要多多应用才是。

使用方法:

1
		$(':header').css('...', '...');

更多’:header’相关请阅读:http://api.jquery.com/header-selector/

三、如何自定义选择器:

Sizzle中给出了很多的选择器,那么我们也可以自己定义自己所需的选择器,代码如下:

html实例代码:

1
2
3
    <div id="box">
    	<span>找到我</span>
    </div>
1
2
3
4
5
6
7
8
9
	jQuery(function($) {
		$.extend($.expr[':'], {
			hasSpan : function(e) {
				return $(e).find('span').length > 0;
			}
		});
 
		alert($('#box:hasSpan').html());   //输出:<span>找到我</span>
	});

四、附上百度博客的Sizzle选择器流程图:

点击查看大图:

John很强大,感谢他让我学习到如此美妙和优雅的代码。

不错不错,已经有 个评论!
  1. 其实操作dom的话,我更关注的这个玩意的性能如何呀??

    • 你速度也忒快了点吧!

    • 话说,阿里前天给我发面试邮件通知,昨天给我面试电话通知,被我拒绝了!暂时没有去杭州发展的意愿。。。

  2. 没用到过…一脸无知地飘过~~

  3. 暂时只关注如何操作DOM,不关注性能

    • 我现在比较关注性能!!

  4. 受教了!!收藏起来!

  5. 暂时用不了 有点复杂

  6. 好好收藏 呵呵。。。
    书香阁来留个脚丫 以后常来往哈

    • 好的,多多来往!

    • 偶又来了 呵呵。。。

  7. sweetwater

    呵呵,兄弟,最好别去,去了做b2b的前端你会郁闷的

    • 还好我没打算没杭州发展!!

  8. 此文被鉴定为技术类文章,完毕

  9. 目前Sizzle应该是最广泛应用的一种选择器了
    链接已经加上 谢谢 多多交流

    • 你的链接也已添加!

  10. 谢谢博主分享,受益了

  11. 好好收藏 呵呵

  12. 可以的,挺好的文章

  13. 对Sizzle选择器的知识又更加地深入了解

  14. 学习中

  15. 不错,学习学习

  16. 确实是不错~~~

  17. 美好的时光,我们一起度过

  18. 学习了。我也是技术博客,刚开的,呵呵。

  19. This is a very interesting point of view. Your blog is refreshing, but I wish one could find more content, though. I am looking forward to reading more from you. Keep up the good work. thanks.

  20. 学习了。不错

  21. 确实是不错~~~~~~

  22. 学习

  23. 恩啊,想博主取经来了

  24. emodo

    这个貌似已经加到JQUERY1.4.4中了~~~

我要评论

  • * *