菜鸟的jQuery源码学习笔记(三)
1 each: function(callback, args) { 2 return jQuery.each(this, callback, args); 3 },
each:这个调用了jQuery.each方法,来遍历当前集合。我们先来看看jQuery.each方法:
//args是一个数组 each: function(obj, callback, args) {var value,i = 0,length = obj.length,isArray = isArraylike(obj);if (args) {if (isArray) {//如果遍历的目标是数组那么就按照下标遍历元素for (; i < length; i++) {value = callback.apply(obj[i], args);if (value === false) {break;}}} else {//如果遍历的目标不是数组那么就通过枚举对象来遍历对象成员for (i in obj) {value = callback.apply(obj[i], args);if (value === false) {break;}}}// A special, fast, case for the most common use of each//如果没有args数组传入} else {if (isArray) {//如果遍历的目标是数组那么就按照下标遍历元素for (; i < length; i++) {value = callback.call(obj[i], i, obj[i]);if (value === false) {break;}}} else {//如果遍历的目标不是数组那么就通过枚举对象来遍历对象成员for (i in obj) {value = callback.call(obj[i], i, obj[i]);if (value === false) {break;}}}}return obj; },
整个each方法结构还是很清晰的。按照有args数组有没有传入分为两个分支,每个分支又按照转入的遍历目标是数组还是对象分成两个小分支。有传参args,则在遍历到得每一个元素上调用callback方法并传入参数args。如果没有传参args,那么callback实际传入的参数就变成了当前序号i以及元素本身,这就是我们经常用的调用形式,例如$(".class").each(function(i,e){})。
这里其实我想强调一下的就是大家千万别只认为each方法就只有经常使用的each(function(i,e){})这一种形式哦。其实each里面callback后面是可以带一个参数数组的,不过这样的话千万记得callback的参数可就不是序号+当前元素了啊。
转载于:https://www.cnblogs.com/chou/p/3934961.html
菜鸟的jQuery源码学习笔记(三)相关推荐
- jquery源码学习笔记三:jQuery工厂剖析
jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...
- jquery源码学习笔记一:总体结构
练武不练功,到老一场空.计算机也一样. 计算机的功,就是原理.如果程序员只会使用各种函数,各种框架,而不知其原理,顶多熟练工人而已.知其然,更要知其所以然. jquery我们用得很爽,但它究竟咋实现的 ...
- 2016年11月2日——jQuery源码学习笔记
1.jQuery()函数,即$().有四种不同的调用方式. (1)传递CSS选择器(字符串)给$()方法,返回当前文档中匹配该选择器的元素集.可选第二个参数,一个元素或jQuery对象,定义元素查询的 ...
- ffmpeg源码学习笔记三
9. 关于如何parse mkv 前面为了不把战线拉太长,把如何parse mkv container 内容直接跳过了 接下来还是从read_header 开始讲解 static int matros ...
- Vuex 4源码学习笔记 - Vuex是怎么与Vue结合?(三)
在上一篇笔记中:Vuex源码学习笔记 - Vuex开发运行流程(二) 我们通过运行npm run dev命令来启动webpack,来开发Vuex,并在Vuex的createStore函数中添加了第一个 ...
- Java多线程之JUC包:Semaphore源码学习笔记
若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5625536.html Semaphore是JUC ...
- Vuex 4源码学习笔记 - 通过dispatch一步步来掌握Vuex整个数据流(五)
在上一篇笔记中:Vuex 4源码学习笔记 - Store 构造函数都干了什么(四) 我们通过查看Store 构造函数的源代码可以看到主要做了三件事情: 初始化一些内部变量以外 执行installMod ...
- jQuery源码学习之Callbacks
jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...
- RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?
RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 文章目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目 ...
最新文章
- 178页,四年图神经网络研究精华汇总
- shell中read用法
- Ruby 3 有望引入静态类型
- 08、求x的y的幂次方的最后3位数——循环
- 使用Fork/Join框架优化归并排序
- 安卓修改动画效果--动画差值器TimeInterpolator
- 神经网络之文本情感分析(一)
- DDos防御工具DDoS-Defender-v2.1.0
- 如何使用 Buildah 构建容器镜像
- JSP的九种内置对象
- 如何利用魔棒工具抠图_10秒教你如何用PS魔棒工具抠图
- centos7根分区扩容(适用目前主流版本)
- edge浏览器 路径获得
- huffman python,哈夫曼(Huffman)编码python代码实现
- 极客日报第 39 期:小米 11 不送充电器;阿里达摩院 2021 十大科技趋势发布!
- ue4学习日记4(植被,光照,光束遮挡,天空球)
- DMIPS, FLOPS, OPS概念
- 区块链安全是场持久战,比特安审计与诸君共勉
- ridis的安装与遇到的问题
- 喵帕斯之矩阵 SDUT