jQuery选择器源码解读(七):elementMatcher函数


Posted in Javascript onMarch 31, 2015

要读懂Sizzle的Compile执行过程,首先需要弄清楚涉及的各个子程序的功能和关键变量和作用,我将逐一对jQuery-1.10.2版本的Compile代码进行说明,望能给予大家帮助。

elementMatcher(matchers)

1、源码

function elementMatcher(matchers) {

 return matchers.length > 1 ? function(elem, context, xml) {

  var i = matchers.length;

  while (i--) {

   if (!matchers[i](elem, context, xml)) {

    return false;

   }

  }

  return true;

 } : matchers[0];

}

2、功能

该函数返回一个函数,用来判定传入的elem是否符合匹配执行函数数组matchers,若不满足返回false,否则返回true。

若matchers仅有一个元素,则返回该元素本身,否则返回一个新函数——即代码中的function(elem, context, xml)函数。

返回函数效果有点类似于context.filter(selectors),当然,其结果仅仅返回true或false,而非jQuery对象。

3、参数
matchers——数组,每个元素都是非伪类的匹配器执行函数。例如:在实际执行过程中,div.map span:lt(10),其中div和,map的匹配执行函数就会作为matchers的两个元素传入elementMatcher函数来过滤span节点的父节点是否满足要求。

4、返回函数

4.1 若matchers多于1个元素,则返回如下函数:

function(elem, context, xml) {

 var i = matchers.length;

 while (i--) {

  if (!matchers[i](elem, context, xml)) {

   return false;

  }

 }

 return true;

}

4.1.1 功能
从matchers最后一个元素到第一个元素依次调用,以匹配传入的elem节点是否满足要求,全部满足返回true,否则返回false。

4.1.2 参数

elem——待检查的单个节点元素。

context——执行整个选择器字符串匹配的上下文节点,大部分时候是没有用途。

xml——当前搜索对象是HTML还是XML文档,若是HTML,则xml参数为false。

4.2 若matchers只有1个元素,则返回该元素本身。
4.2.1 功能
检查传入的elem是否与选择器匹配,若匹配返回true,否则返回false。

4.2.2 参数
同4.1.2参数说明。

Javascript 相关文章推荐
ASP SQL防注入的方法
Dec 25 Javascript
JavaScript 程序编码规范
Nov 23 Javascript
JS的replace方法详细介绍
Nov 09 Javascript
通过伪协议解决父页面与iframe页面通信的问题
Apr 05 Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
May 12 Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 jQuery
vue+element-ui动态生成多级表头的方法
Aug 28 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
解决elementui表格操作列自适应列宽
Dec 28 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
Mar 31 #Javascript
jQuery选择器源码解读(五):tokenize的解析过程
Mar 31 #Javascript
JavaScript制作windows经典扫雷小游戏
Mar 31 #Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
Mar 31 #Javascript
JavaScript制作简易的微信打飞机
Mar 31 #Javascript
JS获取表格内指定单元格html内容的方法
Mar 31 #Javascript
JS实现为表格动态添加标题的方法
Mar 31 #Javascript
You might like
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP asXML()函数讲解
2019/02/03 PHP
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
django中send_mail功能实现详解
2018/02/06 Python
Python类继承和多态原理解析
2020/02/05 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
应用心理学专业求职信
2014/08/04 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
会计工作能力自我评价
2015/03/05 职场文书
小学教师求职信范文
2015/03/20 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技
Python 文字识别
2022/05/11 Python