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源码学习笔记(三)相关推荐

  1. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

  2. jquery源码学习笔记一:总体结构

    练武不练功,到老一场空.计算机也一样. 计算机的功,就是原理.如果程序员只会使用各种函数,各种框架,而不知其原理,顶多熟练工人而已.知其然,更要知其所以然. jquery我们用得很爽,但它究竟咋实现的 ...

  3. 2016年11月2日——jQuery源码学习笔记

    1.jQuery()函数,即$().有四种不同的调用方式. (1)传递CSS选择器(字符串)给$()方法,返回当前文档中匹配该选择器的元素集.可选第二个参数,一个元素或jQuery对象,定义元素查询的 ...

  4. ffmpeg源码学习笔记三

    9. 关于如何parse mkv 前面为了不把战线拉太长,把如何parse mkv container 内容直接跳过了 接下来还是从read_header 开始讲解 static int matros ...

  5. Vuex 4源码学习笔记 - Vuex是怎么与Vue结合?(三)

    在上一篇笔记中:Vuex源码学习笔记 - Vuex开发运行流程(二) 我们通过运行npm run dev命令来启动webpack,来开发Vuex,并在Vuex的createStore函数中添加了第一个 ...

  6. Java多线程之JUC包:Semaphore源码学习笔记

    若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5625536.html Semaphore是JUC ...

  7. Vuex 4源码学习笔记 - 通过dispatch一步步来掌握Vuex整个数据流(五)

    在上一篇笔记中:Vuex 4源码学习笔记 - Store 构造函数都干了什么(四) 我们通过查看Store 构造函数的源代码可以看到主要做了三件事情: 初始化一些内部变量以外 执行installMod ...

  8. jQuery源码学习之Callbacks

    jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...

  9. RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?

    RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 文章目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目 ...

最新文章

  1. 178页,四年图神经网络研究精华汇总
  2. shell中read用法
  3. Ruby 3 有望引入静态类型
  4. 08、求x的y的幂次方的最后3位数——循环
  5. 使用Fork/Join框架优化归并排序
  6. 安卓修改动画效果--动画差值器TimeInterpolator
  7. 神经网络之文本情感分析(一)
  8. DDos防御工具DDoS-Defender-v2.1.0
  9. 如何使用 Buildah 构建容器镜像
  10. JSP的九种内置对象
  11. 如何利用魔棒工具抠图_10秒教你如何用PS魔棒工具抠图
  12. centos7根分区扩容(适用目前主流版本)
  13. edge浏览器 路径获得
  14. huffman python,哈夫曼(Huffman)编码python代码实现
  15. 极客日报第 39 期:小米 11 不送充电器;阿里达摩院 2021 十大科技趋势发布!
  16. ue4学习日记4(植被,光照,光束遮挡,天空球)
  17. DMIPS, FLOPS, OPS概念
  18. 区块链安全是场持久战,比特安审计与诸君共勉
  19. ridis的安装与遇到的问题
  20. 喵帕斯之矩阵 SDUT

热门文章

  1. 买房应该少出首付,多贷款
  2. java jolt tuxedo_java使用jolt调用tuxedo服务
  3. mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...
  4. Unity3D之Shader自定义编辑器功能拓展
  5. vue的diff 算法
  6. springboot 参数校验详解
  7. 仿 腾讯新闻快讯 --无缝滚动
  8. JZOJ 4421. aplusb
  9. ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)
  10. mysql如果数据不存在,则插入新数据,否则更新