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 相关文章推荐
通过jquery的$.getJSON做一个跨域ajax请求试验
May 03 Javascript
在HTML代码中使用JavaScript代码的例子
Oct 16 Javascript
JavaScript设计模式之抽象工厂模式介绍
Dec 28 Javascript
JavaScript 实现打印,打印预览,打印设置
Dec 30 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
Feb 22 Javascript
JavaScript  cookie 跨域访问之广告推广
Apr 20 Javascript
js简单倒计时实现代码
Apr 30 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
jQuery中用on绑定事件时需注意的事项
Mar 19 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 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
csdn 批量接受好友邀请
2009/02/19 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
tensorflow识别自己手写数字
2018/03/14 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
年度考核自我鉴定
2014/03/19 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
军人离婚协议书样本
2014/10/21 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
小学副班长竞选稿
2015/11/21 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP