菜鸟的jQuery源码学习笔记(三)
each: function(callback, args) {
return jQuery.each(this, callback, args);
},
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的参数可就不是序号+当前元素了啊。
菜鸟的jQuery源码学习笔记(三)的更多相关文章
- jquery源码学习笔记三:jQuery工厂剖析
jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...
- 菜鸟的jQuery源码学习笔记(前言)
前言 相信任何一名前端开发人员或者是前端爱好者都对jQuery不陌生.jQuery简单易用,功能强大,特别是拥有良好的浏览器兼容性,大大降低了前端开发的难度,使得前端开发变得“平易近人起来”.自从本人 ...
- 菜鸟的jQuery源码学习笔记(二)
jQuery对象是使用构造函数和原型模式相结合的方式创建的.现在来看看jQuery的原型对象jQuery.prototype: jQuery.fn = jQuery.prototype = { //成 ...
- 菜鸟的jQuery源码学习笔记(一)
整个jQuery是一个自调用的匿名函数: (function(global, factory) { if (typeof module === "object" && ...
- jQuery源码学习笔记一
学习jQuery源码,我主要是通过妙味视频上学习的.这里将所有的源码分析,还有一些自己弄懂过程中的方法及示例整理出来,供大家参考. 我用的jquery v2.0.3版本. var rootjQuery ...
- jquery源码学习笔记二:jQuery工厂
笔记一里记录,jQuery的总体结构如下: (function( global, factory ) { //调用factory(工厂)生成jQuery实例 factory( global ); }( ...
- jquery源码学习笔记(一)jQuery的无new构建
本人是一名.net程序员..... 你一个.net coder 看什么jQuery 源码啊? 原因吗,很简单.技多不压身吗(麻蛋,前端工作好高...羡慕). 我一直都很喜欢JavaScript,废话不 ...
- jquery源码学习笔记一:总体结构
练武不练功,到老一场空.计算机也一样. 计算机的功,就是原理.如果程序员只会使用各种函数,各种框架,而不知其原理,顶多熟练工人而已.知其然,更要知其所以然. jquery我们用得很爽,但它究竟咋实现的 ...
- jquery 源码学习(三)
jQuery源码分析-03构造jQuery对象-源码结构和核心函数,需要的朋友可以参考下. 作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 毕竟 ...
随机推荐
- Docker 生成Node.js web app(含端口映射)
1.新建目录src,并进入src目录 [xiejdm@localhost Documents]$ mkdir src [xiejdm@localhost Documents]$ cd src/ 2.创 ...
- YUM更换源--yum找不到安装包(转)
公司提供的CentOS VM中,/etc/yum.repos.d 下 只有一个build.repo,其中提供的yum 源只有公司内部的几个源,很多包在这些源中都找不到.于是要添加别的源,下面的帖子中介 ...
- 浏览器兼容问题汇总<转>
浏览器的内核 Mozilla Firefox ( Gecko ) Internet Explorer ( Trident ) Opera ( Presto ) Safari ( WebKit ) Go ...
- mvc of js
http://alexatnet.com/articles/model-view-controller-mvc-javascript The article demonstrates how to a ...
- Ubuntu 安装 Eclipse C/C++开发环境
所需软件清单: 1.eclipse-linuxtools-indigo-SR1-incubation-linux-gtk.tar.gz 2.jre-7u2-linux-i586.tar.gz 先将上述 ...
- 【HDU 5532 Almost Sorted Array】水题,模拟
给出一个序列(长度>=2),问去掉一个元素后是否能成为单调不降序列或单调不增序列. 对任一序列,先假设其可改造为单调不降序列,若成立则输出YES,不成立再假设其可改造为单调不增序列,若成立则输出 ...
- stl_map,set 用法
set: 集合a,b加起来,去重 hdu 1406 #include <iostream> #include<cstdio> #include<set> using ...
- 谈谈 WLST Custom Commands
在了解WLST定制命令之前,简单说一下WLST,WLST 全称叫Weblogic Scripting Tool, 它提供了一组预定义命令来方便Weblogic的用户通过命令行对Weblogic 实例, ...
- The Balance(母函数)
The Balance Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Apache Thrift入门(安装、测试与java程序编写)
安装Apache Thrift ubuntu linux运行: #!/bin/bash #下载 wget http://mirrors.cnnic.cn/apache/thrift/0.9.1/thr ...