本代码来自1.7.1版本。
jQuery.expr = Sizzle.selectors; jQuery.expr[":"] = jQuery.expr.filters;
//4227行 Sizzle.selectors = { //4483---返回的都是Boolean filters:{ /* * @name enabled * @info 加了一个限制:不能为隐藏域 */ enabled:function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, /* * @name disabled * @info 匹配是否disabled */ disabled:function(elem){ return elem.disabled === true; }, /* * @name checked * @info 匹配是否选中 */ checked:function(){ return elem.checked === true; }, /* * @name selected * @info */ selected:function(){ if(elem.parentNode){ elem.parentNode.selectedIndex; } return elem.selected === true; }, /* * @name parent * @info 匹配是否含有子节点的,直接看有没有firstChild */ parent:function(elem){ return !!elem.firstChild; }, /* * @name empty * @info 匹配不含子节点的,直接看有没有firstChild */ empty:function(elem){ return !elem.firstChild; }, /* * @name has * @info */ has:function(elem,i,match){ return !!Sizzle(match[3],elem).length; }, /* * @name header * @info 匹配是否是h1,h2,h3,h4,h5,h6 */ header:function(elem){ return (/h\d/i).test(elem.nodeName); }, /* * @name text * @info */ text:function(elem){ var attr = elem.getAttribute("type"), type = elem.type; return elem.nodeName.toLowerCase() === "input" && "text" === type && (attr === type || attr === null); }, /* * @name radio * @info 匹配是否是radio */ radio:function(elem){ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; }, /* * @name checkbox * @info 匹配是否是checkbox */ checkbox:function(elem){ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; }, /* * @name file * @info 匹配是否是文件输入域 */ file:function(elem){ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; }, /* * @name password * @info 匹配是否是密码输入域 */ password:function(elem){ return elem.nodeName.toLowerCase() === "input" && elem.type === "password" }, /* * @name submit * @info */ submit:function(elem){ var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && "submit" === elem.type; }, /* * @name image * @info 匹配是否是图像 */ image:function(elem){ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; }, /* * @name reset * @info 匹配是否reset */ reset:function(elem){ var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && "reset" === elem.type; }, /* * @name button * @info */ button:function(elem){ var name = elem.nodeName.toLowerCase(); return name === "input" && "button" === elem.type && name === "button"; }, /* * @name input * @info */ input:function(elem){ return (/input|select|textarea|button/i).test(elem.nodeName); }, /* * @name focus * @info */ focus:function(elem){ return elem === elem.ownerDocument.activeElement; } } }
相关推荐
2. **高效的选择器解析**:Sizzle将CSS选择器转换为一系列可执行的规则,然后逐个应用于DOM树。它使用正则表达式解析选择器,生成一个内部表示,称为“tokens”,然后使用这些tokens遍历DOM。 3. **匹配算法**:...
于是看了jquery的源码,jquery用的选择器的引擎是sizzle,是jquery的作者另一开源项目,在github上面有,号称最快的dom选择器!不到2000行代码。上面说了不是很精彩的开场白,我么来个 for example: $(‘.test’) 在...
jQuery是一个广泛使用的JavaScript库,它的核心特性之一是其强大的选择器引擎——Sizzle。Sizzle引擎使得开发者能够使用类似于CSS的语法来选取DOM元素,极大地提高了网页开发的效率。在这个"jQuery中的Sizzle引擎...
2. **新的选择器引擎Sizzle**:这个版本引入了 Sizzle,一个独立的选择器引擎,增强了 jQuery 的 CSS 选择器支持,使得开发者可以更加方便地定位和操作DOM元素。 3. **链式操作增强**:jQuery 1.4.1 进一步完善了...
1. **选择器(Selectors)**:jQuery 的核心功能之一就是强大的CSS选择器,如 `$("#id")` 选择ID为特定值的元素,`$(".class")` 选择具有特定类的元素,`$("tagname")` 选择所有特定类型的标签。 2. **DOM 操作...
1. 选择器:jQuery的核心之一是其强大的CSS选择器支持,包括ID选择器 (#id)、类选择器 (.class)、元素选择器 (element) 等,甚至支持组合选择器和伪类,如 $(“div.special”).find(“p:first”),可以高效地定位到...
Sizzle是一个独立的、开源的JavaScript选择器引擎,主要用于处理CSS选择器,是jQuery早期版本的核心部分。它为JavaScript开发者提供了一种高效的方式来查找和操作DOM(文档对象模型)中的元素,极大地简化了网页脚本...
jQuery 1.11.3在性能上做了优化,例如使用Sizzle选择器引擎提升选择元素的速度,以及缓存查找结果以减少重复查询,这些改进使代码在大型项目中依然保持高效运行。 总的来说,jQuery 1.11.3是前端开发的重要工具,...
jQuery 1.8.3版本在功能上继承了jQuery一贯的优雅特性,包括选择器引擎(Sizzle)、链式调用、DOM操作、事件处理、动画效果和Ajax请求。其中,选择器引擎使得开发者可以通过CSS1-CSS3的选择器轻松选取DOM元素,而...
jQuery的事件处理机制是其最核心的功能之一,涵盖了事件绑定与删除、事件触发机制等细节。对于事件的捕获和冒泡处理,以及如何通过bind/unbind、live/die、delegate/undelegate等函数来实现事件的高级管理,是每个...
1. 选择器:jQuery的核心之一是它的CSS选择器,如$("#id")、$(".class")等,这些选择器基于Sizzle引擎实现,能够高效地定位DOM元素。 2. 链式调用:jQuery对象返回的是一个包含多个DOM元素的集合,可以连续调用方法...
1. **选择器引擎优化**:jQuery 1.5.1对选择器引擎Sizzle进行了优化,提高了元素查找的速度和准确性,使得在大型DOM树中操作更加高效。 2. **AJAX增强**:这一版本加强了AJAX功能,如增加了对JSONP的支持,提升了...
2. **新的选择器引擎Sizzle**:jQuery 1.4引入了Sizzle选择器引擎,提高了CSS选择器的支持度,使得开发者可以更方便地选取元素。 3. **$.ajax()的增强**:在jQuery 1.4中,$.ajax()方法更加灵活,支持JSONP、跨域...
- jQuery 1.0(2006年):标志着jQuery的诞生,引入了链式调用、选择器引擎Sizzle等创新特性,简化了JavaScript编程。 - jQuery 1.3(2009年):增强了性能,特别是DOM操作速度的提升,同时增加了live()方法,支持...
3. **独立于库**:与其他前端库如jQuery不同,Sizzle是一个独立的选择器引擎,可以被任何JavaScript项目集成,不需要依赖其他大型框架。 4. **API设计**:Sizzle提供了一套简洁的API,使得开发者可以方便地使用CSS...
jQuery的选择器引擎Sizzle是其强大功能的关键之一。Sizzle支持CSS1-CSS3的选择器,并能有效地匹配和选取DOM元素。通过阅读源码,我们可以学习到如何编写高效的选择器,以及如何利用Sizzle实现复杂的DOM遍历。 3. *...
jQuery通过Sizzle选择器引擎实现了这些功能,它利用正则表达式解析CSS选择器,并通过文档遍历找到匹配的元素。了解Sizzle的工作机制,有助于我们编写更高效的选择器表达式。 其次,jQuery对象(jQuery Object)是...
接下来是jQuery 1.3,这是一个重要的里程碑,因为它引入了jQuery的Sizzle选择器引擎。1.3版的主要更新包括: 1. **Sizzle选择器**:这个版本中,jQuery开始使用Sizzle,一个独立的选择器引擎,提高了选择器性能,...