红色带括号文字部分乃我自己加的说明
关于jQuery的新选择器引擎–Sizzle下面地址有介绍了,这里不多说了
原文:http://roln.cn/archives/252
下面看一下例子和结构图。转自(原文更详细): http://blog.allansong.com/?p=6
<html>
<head>
<script src=”link_to_jquery.js”></script>
<script language=”javascript”>
$(function(){
$(”div,span,p.myClass”) . css(”border”, “3px solid red”);
});
</script>
</head>
<body>
<div>div</div>
<p class=”myClass”>p class=”myClass”</p>
<p class=”notMyClass”>p class=”notMyClass”</p>
<span>span</span>
</body>
</html>
从$(“div, span, p.myClass”)开始深入jQuery sizzle, 一步一步来看sizzle是怎么工作的?
(此图虽然流程很明白,但是我看功力尚浅,看代码的时候可真费劲阿,到现在还没完全都弄熟。)
关于sizzle的源码分析,可以看这个文章:
http://lwp8407120426.blog.163.com/blog/static/464280752009145364974/
关于jQuery Sizzle选择器跟普通选择器的区别
转自(有删节,原文内容更详细且有评论):http://www.cssrain.cn/article.asp?id=1315
每个更换选择器之前,查找步骤如下:
1,先查找页面上所有的div 。
2,循环所有的div,查找每个div下的p 。
3,合并结果 。
采用Sizzle选择器之后,查找步骤如下:
1,先查找页面上所有的p 。
2,循环所有的p,查找每个p的父元素,
1)如果不是div,遍历上一层。
2)如果已经是顶层,排除此p。
3)如果是div,则保存此p元素。