jQuery技术内幕:深入解析jQuery架构设计与实现原理. 3.11 便捷方法

3.11 便捷方法

3.11.1 Sizzle.matches(
expr, set )

便捷方法Sizzle.matches( expr, set )使用指定的选择器表达式expr对元素集合set进行过滤,并返回过滤结果。

该方法通过简单地调用函数Sizzle( selector, context, results, seed )来实现,调用时会将元素集合set作为参数seed传入。

相关代码如下所示:

4043 Sizzle.matches =
function( expr, set ) {

4044    
return Sizzle( expr, null, null, set );

4045 };

3.11.2 Sizzle.matchesSelector(
node, expr )

便捷方法Sizzle.matchesSelector( node, expr )用于检查某个元素node是否匹配选择器表达式expr。

如果浏览器支持原生方法matchesSelector()、mozMatchesSelector()、webkitMatchesSelector()、msMatchesSelector()中的一种,则尝试调用原生方法检查元素与选择器表达式是否匹配;如果浏览器不支持原生方法,或者支持但是检查失败(抛出异常),则调用函数Sizzle( selector, context, results, seed ),检查其返回值的长度是否大于0,调用时会将元素node封装成数组作为参数seed传入。

相关代码如下所示:

4047 Sizzle.matchesSelector
= function( node, expr ) {

4048    
return Sizzle( expr, null, null, [node] ).length > 0;

4049 };

5095 (function(){

5096    
var html = document.documentElement,

5097        
matches = html.matchesSelector || html.mozMatchesSelector ||
html.webkitMatchesSelector || html.msMatchesSelector;

5098

5099    
if ( matches ) {

5100        
// Check to see if it's possible to do matchesSelector

5101        
// on a disconnected node (IE 9 fails this)

5102        
var disconnectedMatch = !matches.call( document.createElement(
"div" ), "div" ),

5103             pseudoWorks = false;

5104

5105        
try {

5106             // This should fail with an
exception

5107             // Gecko does not error, returns
false instead

5108             matches.call(
document.documentElement, "[test!='']:sizzle" );

5109    

5110        
} catch( pseudoError ) {

5111             pseudoWorks = true;

5112        
}

5113

5114        
Sizzle.matchesSelector = function( node, expr ) {

5115             // Make sure that attribute
selectors are quoted

5116             expr =
expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");

5117

5118             if ( !Sizzle.isXML( node ) ) {

5119                 try {

5120                     if ( pseudoWorks ||
!Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {

5121                         var ret =
matches.call( node, expr );

5122

5123                         // IE 9's
matchesSelector returns false on disconnected nodes

5124                         if ( ret ||
!disconnectedMatch ||

5125                                 // As well,
disconnected nodes are said to be in a document

5126                                 // fragment in
IE 9, so check for that

5127                                 node.document
&& node.document.nodeType !== 11 ) {

5128                             return ret;

5129                         }

5130                     }

5131                 } catch(e) {}

5132             }

5133

5134             return Sizzle(expr, null, null,
[node]).length > 0;

5135        
};

5136    
}

5137 })();

时间: 2024-10-23 16:26:42

jQuery技术内幕:深入解析jQuery架构设计与实现原理. 3.11 便捷方法的相关文章

jQuery技术内幕:深入解析jQuery架构设计与实现原理1

jQuery技术内幕:深入解析jQuery架构设计与实现原理 高 云 著 图书在版编目(CIP)数据 jQuery技术内幕:深入解析jQuery架构设计与实现原理 / 高云著. -北京:机械工业出版社,2013.11 ISBN 978-7-111-44082-6 I. j- II. 高- III. JAVA语言-程序设计 IV. TP312 中国版本图书馆CIP数据核字(2013)第221662号 版权所有·侵权必究 封底无防伪标均为盗版 本书法律顾问 北京市展达律师事务所     本书由阿里巴

基于微服务和Docker容器技术的PaaS云平台架构设计

本文讲的是基于微服务和Docker容器技术的PaaS云平台架构设计[编者的话]在系统架构上,PaaS云平台主要分为微服务架构.Docker容器技术.DveOps三部分,这篇文章重点介绍微服务架构的实施. [3 天烧脑式容器存储网络训练营 | 深圳站]本次培训以容器存储和网络为主题,包括:Docker Plugin.Docker storage driver.Docker Volume Pulgin.Kubernetes Storage机制.容器网络实现原理和模型.Docker网络实现.网络插件.

基于云技术的ELC集群式服务器架构设计与实现

基于云技术的ELC集群式服务器架构设计与实现 西安电子科技大学 张文 本文提出了一种基于云技术的弹性负载均衡集群式服务器架构(Elastic and Load Balancing Cluster Server Architecture based on CloudTechnology,ELC集群式服务器架构).本架构以Eucalyptus云计算平台为基础设施,按照计算与存储分离原则整体分为两部分.其中,计算服务系统在Eucalyptus云平台的计算模块基础上,通过虚拟服务器实例方式对外提供服务,

jQuery技术内幕:深入解析jQuery架构设计与实现原理. 导读

   本书由阿里巴巴资深前端开发工程师撰写,从源代码角度全面而系统地解读了jQuery的17个模块的架构设计理念和内部实现原理,旨在帮助读者参透jQuery中的实现技巧和技术精髓,同时本书也对广大开发者如何通过阅读源代码来提升编码能力和软件架构能力提供了指导.     本书首先通过"总体架构"梳理了各个模块的分类.功能和依赖关系,让大家对jQuery的工作原理有大致的印象:进而通过"构造jQuery对象"章节分析了构造函数jQuery()的各种用法和内部构造过程:接

jQuery技术内幕:深入解析jQuery架构设计与实现原理. 2.8 静态属性和方法

2.8 静态属性和方法 在构造jQuery对象模块中还定义了一些重要的静态属性和方法,它们是其他模块实现的基础.其整体源码结构如代码清单2-3所示. 代码清单2-3 静态属性和方法 388 jQuery.extend({ 389     noConflict: function( deep ) {}, 402     isReady: false, 406     readyWait: 1, 409     holdReady: function( hold ) {}, 418     read

jQuery技术内幕:深入解析jQuery架构设计与实现原理. 2.2 总体结构

2.2 总体结构 构造jQuery对象模块的总体源码结构如代码清单2-1所示. 代码清单2-1 构造 jQuery 对象模块的总体源码结构  16 (function( window, undefined ) {         // 构造 jQuery 对象  22    var jQuery = (function() {  25       var jQuery = function( selector, context ) {  27              return new jQ

jQuery技术内幕:深入解析jQuery架构设计与实现原理2

第三部分 底层支持模块 第3章 选择器Sizzle 第4章 异步队列Deferred Object 第5章 数据缓存Data  第6章 队列Queue 第7章 浏览器功能测试Support 第3章 选择器Sizzle Sizzle是一款纯JavaScript实现的CSS选择器引擎,它具有以下特性: 完全独立,无库依赖. 相较于大多数常用选择器其性能非常有竞争力. 压缩和开启gzip后只有4?KB. 具有高扩展性和易于使用的API. 支持多种浏览器,如IE 6.0+.Firefox 3.0+.Ch

jQuery技术内幕:深入解析jQuery架构设计与实现原理. 1.2 总体架构

1.2 总体架构 jQuery的模块可以分为3部分:入口模块.底层支持模块和功能模块,如图1-1所示,图中还展示了模块之间的主要依赖关系. 来看看图1-1中各个模块的功能和依赖关系. 在构造jQuery对象模块中,如果在调用构造函数jQuery()创建jQuery对象时传入了选择器表达式,则会调用选择器Sizzle遍历文档,查找与之匹配的DOM元素,并创建一个包含了这些DOM元素引用的jQuery对象. 选择器Sizzle是一款纯JavaScript实现的CSS选择器引擎,用于查找与选择器表达式

jQuery技术内幕:深入解析jQuery架构设计与实现原理. 2.3 jQuery.fn.init( selector, context, rootjQuery )

2.3 jQuery.fn.init( selector, context, rootjQuery ) 2.3.1 12个分支 构造函数jQuery.fn.init()负责解析参数selector和context的类型,并执行相应的逻辑,最后返回jQuery.fn.init()的实例.参数selector和context共有12个有效分支,如表2-1所示. 表2-1 参数selector和context的12个分支          selector   context    示 例 1