zepto的第一个函数,zepto.matches:

作用:用来匹配dom元素是否匹配某css selector。

它为后面的一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等。

进行初始化的判断,如果不存在DOM元素或者css selector,或者非元素节点的话,直接返回,不再进行后续操作。

获取统一接口,监听所有浏览器(IE6-8不支持),需要注意到的是顺序问题,element.matches就是封装之后的函数,可以忽略,

然后优先使用element.webkitMatchesSelector,webkit内核占有率最高,尤其是国内的浏览器的高速引擎都是webkit;

2013年2月Opera放弃Presto转向Webkit,因此把element.oMatchesSelector放在了倒数第二位以兼容老版本的Opera,而尚未完全标准化的matchesSelector则放在了最后

调用该方法。

同时,也提供了向下兼容的方法:

如果不支持原生matchesSelector,通过对当前元素给定一个假定的父元素,在父元素中查找是否有与选择器相符的子元素,最后删除存储在临时父节点中的内容,释放不必要的内存占用。

其中解释两点:

1、按位取反运算符 (~),查看表达式的二进制表示形式的值,并执行位非运算。

二进制数值中的任何一位为 1,则结果中的该位变为 0。表达式中的任何一位为 0,则结果中的该位变为 1。实际表现结果就是对当前十进制数据取负值再减去1,例如: ~12 == -13,  ~-3  == 2。

2、zepto.qsa就是zepto实现的选择器。

最后的return match 即返回匹配结果。

zepto源码--matches--学习笔记的更多相关文章

  1. zepto 源码 $.contains 学习笔记

    $.contains(parent,node)  返回值为一个布尔值 ==> boolean parent,node我们需要检查的节点检查父节点是否包含给定的dom节点,如果两者是相同的节点,返 ...

  2. zepto源码--init--学习笔记

    先展示init函数,由于笔记本屏幕太小,删掉了部分源码注释,才能在一屏内截图. 当我们调用$()的时候,便会直接调用zepto.init()生成zepto对象,跟jquery生成jquery对象类似. ...

  3. zepto源码--fragment--学习笔记

    文档片段fragment函数默认传递三个参数: html文档片段字符串 name标签 properties额外添加的属性 函数内部实现过程: var dom, nodes, container; 中间 ...

  4. c++ stl源码剖析学习笔记(一)uninitialized_copy()函数

    template <class InputIterator, class ForwardIterator>inline ForwardIterator uninitialized_copy ...

  5. zepto源码--qsa--学习笔记

    zepto内部选择器qsa方法的实现. 简述实现原理: 通过判断传入的参数类型: 如果是'#id',则使用getElementById(id)来获取元素,并且将结果包装成数组形式: 如果是'.clas ...

  6. zepto源码--extend--学习笔记

    对象继承函数: $.extend(){},默认传递一个参数,需要继承的对象目标.函数展示: 最终实现的过程,需要调用工具函数extend,首先分析extend函数. 默认传递三个参数,继承的目标对象- ...

  7. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...

  8. c++ stl源码剖析学习笔记(二)iterator

    ITERATOR 迭代器 template<class InputIterator,class T> InputIterator find(InputIterator first,Inpu ...

  9. c++ stl源码剖析学习笔记(三)容器 vector

    stl中容器有很多种 最简单的应该算是vector 一个空间连续的数组 他的构造函数有多个 以其中 template<typename T> vector(size_type n,cons ...

随机推荐

  1. 概率 Gym 100502D Dice Game

    题目传送门 /* 题意:两个人各掷两个骰子,给出每个骰子的最小值和最大值,其余值连续分布 问两人投掷,胜利的概率谁大 数据小,用4个for 把所有的可能性都枚举一遍,统计每一次是谁胜利 还有更简单的做 ...

  2. 时间工厂[XDU1013]

    Problem 1013 - 时间工厂 Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 384  Acce ...

  3. 分类 kNN

    #coding=utf-8 from numpy import * import operator from os import listdir import matplotlib import ma ...

  4. BZOJ4327 : JSOI2012 玄武密码

    对所有询问串建立AC自动机. 然后将母串在AC自动机上跑,每走到一个点x,从x点出发沿着fail指针能到的所有前缀都是匹配成功的,暴力向上走,碰到走过的就break,这样每个点最多只会被标记一次. 时 ...

  5. 使用WebRequest 检测 手机号归属地。 C#通用 使用json 和可设定超时的WebClient

    首先建立jsonObject,当然你也可以使用xml解析,目前介绍一下我使用的方法. /******************************************************** ...

  6. 为tomcat 安装 native 和配置apr

    yum install -y apr-devel openssl-devel gcc 安装native cd /lxyy/tomcat7/bin tar zxvf tomcat-native.tar. ...

  7. 《为ipad而设计 打造畅销APP》读书笔记

    (1)应用应该对用户程序持ipad的变化做出响应 (2)要设计出确实出色的触摸屏交互界面需要能够触摸到自己的设计,反复触摸,直到找到感觉 (3)chipmunk physics 2D的物理图形库 (4 ...

  8. Codeforces Round #207 (Div. 2) A. Group of Students

    #include <iostream> #include <vector> using namespace std; int main(){ ; cin >> m ...

  9. fireBug使用指南

    据说,对于网页开发人员来说,Firebug是Firefox浏览器中最好的插件之一. 我最近就在学习怎么使用Firebug,网上找到一篇针对初学者的教程,感觉比较有用,就翻译了出来. ========= ...

  10. Lvs+keepalived+nginx+php的session 保持的算法

    ●什么是会话保持,有什么作用 会话保持是指在负载均衡器上有一种机制,在作负载均衡的同时,还保证同一用户相关连的访问请求会被分配到同一台服务器上. 会话保持有什么作用呢,举例说明一下 如果有一个用户访问 ...