ps:本文中"组装成成数组"指的是若元素个数大于1则返回数组,若元素只有1个则返回元素本身

以下函数是$.fn该对象的方法

ready(callback)

通过readyRE正则表达式检测document.readyState是否符合,若符合则调用回调函数;

否则添加DOMContentLoaded事件处理函数以调用回调函数

each(callback)

因为Z元素集合本身就是类数组,不需要像$.each(elements,callback)一样先判断elements是否类数组,所以使用原生的Array.every来遍历更好

filter(selector)

若selector是函数,则返回this.not(this.not(selector)),双重否定即肯定

否则,调用Array.filter来对this中每个元素调用zepto.matches并返回该结果

not(selector)

创建ndoes数组

若selector是函数,则对this中每个元素调用该函数,若返回值为false,则向nodes中添加该元素

否则,定义exludes,若selector是字符串,则excludes=this.filter(selector),

若selector是类数组切selector.item是function,则excludes=slice.call(selector),

否则excludes=$(selector)

判断this中每个元素是否在excludes中,若不存在于excludes中,则将该元素添加至nodes中

返回 $(nodes)

find(selector)

定义result

若selector是对象,则$(selector),并对该对象进行过滤:this中某一个元素含有该节点(节点指的是$(selector)的一个元素),result即为过滤后的集合

this.length == 1,result = $(zepto.qsa(this[0], selector))

否则, result = this.map(function() { return zepto.qsa(this, selector) }), 类似于第二种情况,只不过此时要遍历this中每个元素

closest(selector, context)

定义node = this[0], collection = false

若selector是object,则 collection = $(selctor)

当 node为真 且 node不符合选择器时,

node = node !== context && !isDocument(node) && node.parentNode

就是说node一旦等于context或是document,则令node=false;其余情况下 node = node.parent

返回 $(node)

parents(selector)

获取this的所有元素的所有祖先存放于ancestors中

对ancestors进行过滤,并返回该结果

parent(selector)

获取this的所有父节点并组装成成数组然后进行uniq化,然后根据selector进行过滤

children(selector)

获取this的所有子节点并组装成成数组 ,然后根据selector进行过滤

contents()

获取this的所有childNodes(包括文本节点)并组装成成数组

siblings

获取this的父节点下非this的所有子节点并组装成数组(也就是this的兄弟节点数组),然后根据selector进行过滤

empty

令this下每个元素的innerHTML = '',返回this

pluck(property)

获取this下每个元素(el)的el[property],并组装成数组作为返回值

Zepto源码笔记(三)的更多相关文章

  1. Zepto源码笔记(一)

    最近在研究Zepto的源码,这是第一篇分析,欢迎大家继续关注,第一次写源码笔记,希望大家多指点指点,第一篇文章由于首次分析原因不会有太多干货,希望后面的文章能成为各位大大心目中的干货. Zepto是一 ...

  2. Tomcat8源码笔记(三)Catalina加载过程

    之前介绍过 Catalina加载过程是Bootstrap的load调用的  Tomcat8源码笔记(二)Bootstrap启动 按照Catalina的load过程,大致如下: 接下来一步步分析加载过程 ...

  3. Zepto源码笔记(二)

    uniq(array) 返回不存在重复值的数组 function classRE(name) 判断classCache中是否已存在name,若存在则取出classCache[name];否则存入该类名 ...

  4. jQuery源码笔记——三

    将类数组对象转化为数组对象 javascript中有许多类数组对象,比如HTMLCollection,NodeList,arguments.她们的特点是和数组一样有length属性,并且有0,1,2这 ...

  5. Tomcat8源码笔记(六)连接器Connector分析

    根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Conn ...

  6. Tomcat8源码笔记(五)组件Container分析

    Tomcat8源码笔记(四)Server和Service初始化 介绍过Tomcat中Service的初始化 最先初始化就是Container,而Container初始化过程是咋样的? 说到Contai ...

  7. Tomcat8源码笔记(四)Server和Service初始化

    上一章 简单说明下Tomcat各个组件: Server:服务器,Tomcat服务器,一个Tomcat只有一个Server组件; Service:业务层,是Server下最大的子容器,一个Server可 ...

  8. zepto源码--核心方法10(位置)--学习笔记

    今天基本上就是zepto学习笔记的最后一篇了,介绍一下有关位置的函数,position, offset, scrollLeft, scrollTop scrollLeft 如果所选取的包装集不存在,则 ...

  9. 一个普通的 Zepto 源码分析(三) - event 模块

    一个普通的 Zepto 源码分析(三) - event 模块 普通的路人,普通地瞧.分析时使用的是目前最新 1.2.0 版本. Zepto 可以由许多模块组成,默认包含的模块有 zepto 核心模块, ...

随机推荐

  1. mobile javascript

    http://www.cnblogs.com/zhepama/archive/2013/06/01/3112023.html http://www.csdn.net/article/2014-01-0 ...

  2. OpenRTSP的使用

    由于需要研究OpenRTSP的源码,所以先学习下使用. -d [time]--------这个是录制时间,就是单位秒,超时后,程序自动结束. -i   -----------以.avi文件格式生成. ...

  3. 有意思的数学题:Trapping Rain Water

    LeetCode传送门 https://leetcode.com/problems/trapping-rain-water/ 目标:找出积木能容纳的水的“面积”,如图中黑色部分是积木,蓝色为可容纳水的 ...

  4. Design Tic-Tac-Toe 解答

    Question Design a Tic-tac-toe game that is played between two players on a n x n grid. You may assum ...

  5. libvirt TLS

    博客原文 http://hi.baidu.com/wwfmarcpjkbdiod/item/7b43c89e949d7fbbcd80e590 构建Libvirt的x509证书远程tls连接http:/ ...

  6. jQuery效果-滑动

    index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  7. (转)三星i9500/Galaxy S4 刷基带教程

    一.手机基带是什么? 三星手机的基带用通俗的话来说就是手机中的一个负责信号调节并进行传输给系统的电路设置,基带的好坏直接影响到在同等信号强度下,手机的获取信号的能力. 二.为什么要刷基带? 常说的基带 ...

  8. 认识ptrace函数

    认识ptrace函数 这是man对于ptrace这个系统调用的解释 http://man7.org/linux/man-pages/man2/ptrace.2.html #include <sy ...

  9. Jsp详解

    1Jsp基础 1.1 Jsp引入 Servlet的作用: 用java语言开发动态资源的技术!!! Jsp的作用:用java语言(+html语言)开发动态资源的技术!!! Jsp就是servlet!!! ...

  10. MATLAB获取“非免驱的相机或者摄像头”的图像数据

    Image Acquisition Toolbox™ Adaptor Kit 图像採集工具箱 当要使用MATLAB获取"非免驱的相机或者摄像头"的图像数据时,须要开发一个插件,MA ...