本代码来自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; } } }
相关推荐
在 http://www.cnblogs.com/strick/p/5078435.html 有描述
于是看了jquery的源码,jquery用的选择器的引擎是sizzle,是jquery的作者另一开源项目,在github上面有,号称最快的dom选择器!不到2000行代码。上面说了不是很精彩的开场白,我么来个 for example: $(‘.test’) 在...
jquery从1.3开始,使用了新的选择器–sizzle。效率超过了以前的jquery版本的其他选择器。下面这篇文章主要介绍了jQuery源中sizzle选择器的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。
在jQuery 1.8.1中,您可以移除一些不需要的模块,以构建一个专属的jQuery版本。通过基于grunt的新构建系统,你可以轻松实现该功能。可以移除的模块包括ajax、css、dimensions、effects和offset。更多信息可参阅...
《jquery技术内幕:深入解析jquery架构设计与实现原理》由阿里巴巴资深前端开发工程师撰写,从源代码角度全面而系统地解读了jquery的17个模块的架构设计理念和内部实现原理,旨在帮助读者参透jquery中的实现技巧和...
资源名称:jQuery技术内幕:深入解析jQuery架构设计与...接着详细分析了底层支持模块的源码实现,包括:选择器 Sizzle、异步队列 Deferred、数据缓存 Data、资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
在 http://www.cnblogs.com/strick/p/5078435.html 描述
该项目不再维护! 描述 Selenium WebDriver的扩展包括jQuery / Sizzle选择器支持。... jQuery / Sizzle在不使用jQuery的网站上的页面上自动加载 支持上下文切换 支持ExpectedConditions 支持页面对象 安装
* Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Sat Feb 13 22:33:48 2010 -0500 */ (function(window, ...
* Includes Sizzle.js * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * * Date: 2020-05-04T22:49Z */
jQuery就是如此强大,你可以轻易地找到DOM中的任何元素,而这也是jQuery设计之初query的真实含义(查询)。 编辑本段Jquery对象 jquery提供了很多便利的函数,如each(fn),但是使用这些函数的前提是:你使用的对象...
jQuery / Sizzle自定义伪选择器 只是我的伪装收藏。 表现 请注意将通过这些选择器传递多少个元素,因为它们将无法利用本机DOM querySelectorAll()方法提供的性能提升。 为了在使用这些伪指令中的任何一个时获得最佳...
在jQuery 1.8中,您可以移除一些不需要的模块,以构建一个专属的jQuery版本。通过基于grunt的新构建系统,你可以轻松实现该功能。可以移除的模块包括ajax、css、dimensions、effects和offset。更多信息可参阅README ...
1. Sizzle 选择器引擎重新架构 2. 重新改造动画处理 3. 自动 CSS 前缀处理 当你在 .css() 和 .animate() 中使用 CSS 属性时,jQuery 会自动根据浏览器类型来设置一些前缀,例如 .css("user-select", "none") 在 ...
接着详细分析了底层支持模块的源码实现,包括:选择器sizzle、异步队列deferred、数据缓存data、队列queue、浏览器功能测试support;最后详细分析了功能模块的源码实现,包括:属性操作attributes、事件系统events、...
1. Sizzle 选择器引擎重新架构 2. 重新改造动画处理 3. 自动 CSS 前缀处理 当你在 .css() 和 .animate() 中使用 CSS 属性时,jQuery 会自动根据浏览器类型来设置一些前缀,例如 .css("user-select", "none") 在 ...
jQuery最强大的功能在于它可以通过css选择器查找元素,它的源码中有一半是sizzle css选择器引擎的代码,在html5规范出来之后,增加了document.querySelector和document.querySelectorAll直接查找元素,如果是做...
* Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2010, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * Downloads By http://down.liehuo.net/ * Date: Sat Feb 13 22:33...