Zepto源码笔记(三)
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源码笔记(三)的更多相关文章
- Zepto源码笔记(一)
最近在研究Zepto的源码,这是第一篇分析,欢迎大家继续关注,第一次写源码笔记,希望大家多指点指点,第一篇文章由于首次分析原因不会有太多干货,希望后面的文章能成为各位大大心目中的干货. Zepto是一 ...
- Tomcat8源码笔记(三)Catalina加载过程
之前介绍过 Catalina加载过程是Bootstrap的load调用的 Tomcat8源码笔记(二)Bootstrap启动 按照Catalina的load过程,大致如下: 接下来一步步分析加载过程 ...
- Zepto源码笔记(二)
uniq(array) 返回不存在重复值的数组 function classRE(name) 判断classCache中是否已存在name,若存在则取出classCache[name];否则存入该类名 ...
- jQuery源码笔记——三
将类数组对象转化为数组对象 javascript中有许多类数组对象,比如HTMLCollection,NodeList,arguments.她们的特点是和数组一样有length属性,并且有0,1,2这 ...
- Tomcat8源码笔记(六)连接器Connector分析
根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Conn ...
- Tomcat8源码笔记(五)组件Container分析
Tomcat8源码笔记(四)Server和Service初始化 介绍过Tomcat中Service的初始化 最先初始化就是Container,而Container初始化过程是咋样的? 说到Contai ...
- Tomcat8源码笔记(四)Server和Service初始化
上一章 简单说明下Tomcat各个组件: Server:服务器,Tomcat服务器,一个Tomcat只有一个Server组件; Service:业务层,是Server下最大的子容器,一个Server可 ...
- zepto源码--核心方法10(位置)--学习笔记
今天基本上就是zepto学习笔记的最后一篇了,介绍一下有关位置的函数,position, offset, scrollLeft, scrollTop scrollLeft 如果所选取的包装集不存在,则 ...
- 一个普通的 Zepto 源码分析(三) - event 模块
一个普通的 Zepto 源码分析(三) - event 模块 普通的路人,普通地瞧.分析时使用的是目前最新 1.2.0 版本. Zepto 可以由许多模块组成,默认包含的模块有 zepto 核心模块, ...
随机推荐
- 设置 cell点击 背景色
//设置 cell点击 背景色 cell.selectionStyle = UITableViewCellSelectionStyleDefault; cell.selectedBackgroundV ...
- 8.2.1.13 Multi-Range Read Optimization 多个range 读优化
8.2.1.13 Multi-Range Read Optimization 多个range 读优化 读记录使用一个range scan 在一个secondary index 可以导致很多的随机磁盘访 ...
- perl 安装AnyEvent::HTTP
perl 版本 ActivePerl_5.16.2.msi
- ie版本判断的js hack
常用来判断各种浏览器版本的 ie js hack如下: 1. <!–[if !IE]><!–> 除IE外都可识别 <!–<![endif]–> 2. < ...
- 算法导论(第三版)Exercises2.3(归并排序、二分查找、计算集合中是否有和为X的2个元素)
2.3-1: 3 9 26 38 41 49 52 59 3 26 41 52 9 38 49 57 3 41 52 26 38 57 9 49 3 41 52 26 38 ...
- build/core/base_rules.mk:195: already define
编译错误: build/core/base_rules.mk:195: *** packages/apps/ScanDemo: MODULE.TARGET.APPS.ScanDemo already ...
- linux下常用FTP命令
linux下常用FTP命令 1. 连接ftp服务器 1. 连接ftp服务器格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1b)服 ...
- cURL中的超时设置
访问HTTP方式很多,可以使用curl, socket, file_get_contents() 等方法. 在访问http时,需要考虑超时的问题. CURL访问HTTP: CURL 是常用的访问HTT ...
- [原创作品]一个实用的js倒计时器 postby:zhutty.cnblogs.com
今天做了一个手机短信发送倒计时,额,就是每隔多长时间可以重新发送的功能.贡献出来给园有吐槽点评. //倒计时,time:时长(秒),scb:每秒回调,cb:计时完成回调 var timing = fu ...
- 轻量级mvvm Web开发框架 postby:http://zhutty.cnblogs.com
今天特别郁闷,怎么说呢,之前一直就用angular,然后这两天用的是avalon这东西,反正,一开始没时间去玩它,第一个任务就是封装个jq插件,实现一个小功能.反正呢,就是越写越郁闷.用过angula ...