jQuery each函数源码分析__第1页
jQuery each函数源码分析__第2页
jQuery each函数源码分析__第3页
jQuery each函数源码分析__第4页
jQuery each函数源码分析__第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、jQuery each函数源码分析_ jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理,在jQuery用法的频率特别大,下面就这个函数做了具体讲解: 代码如下: /*! * jQuery源码分析-each函数 * jQuery版本:1.4.2 * * - * 函数介绍 * * each函数通过jQuery.extend函数附加到jQuery对象中: * jQuery.extend( * each: function() * ); * 假如对jQuery.extend函数源码还不了解,可以参考jQuery源码分析-extend函数一文 * * jQuery.each方

2、法用于遍历一个数组或对象,并对当前遍历的元素进行处理 * jQuery.each方法可以为处理函数增加附带的参数(带参数与不带参数的回调用法方法不完全全都) * * - * 用法说明 * each函数依据参数的类型实现的效果不完全全都: * 1、遍历对象(有附加参数) * $.each(Object, function(p1, p2) * this; /这里的this指向每次遍历中Object的当前属性值 * p1; p2; /访问附加参数 * , 参数1, 参数2); * * 2、遍历数组(有附件参数) * $.each(Array, function(p1, p2) * this; /这里

3、的this指向每次遍历中Array的当前元素 * p1; p2; /访问附加参数 * , 参数1, 参数2); * * 3、遍历对象(没有附加参数) * $.each(Object, function(name, value) * this; /this指向当前属性的值 * name; /name表示Object当前属性的名称 * value; /value表示Object当前属性的值 * ); * * 4、遍历数组(没有附加参数) * $.each(Array, function(i, value) * this; /this指向当前元素 * i; /i表示Array当前下标 * value

4、; /value表示Array当前元素 * ); * - * */ /jQuery.each(), $.each() /param Object|Array object 需要遍历处理的对象或数组 /param Function callback 遍历处理回调函数 /param Array args callback回调函数的附加参数 each: function(object, callback, args) /当需要遍历的是一个对象时,name变量用于记录对象的属性名 var name, /当需要遍历的是一个数组时,i变量用于记录循环的数组下标 i = 0, /遍历数组长度,当需要遍历的对

5、象是一个数组时存储数组长度 /假如需要遍历的是一个对象,则length = undefined length = object.length, /检查第1个参数object是否是一个对象 /依据object.length排解数组类型,依据isFunction排解函数类型(由于函数也是对象) isObj = length = undefined | jQuery.isFunction(object); /回调函数具有附加参数时,执行第一个分支 /if(!args) if (args) /需要遍历的是一个对象 if (isObj) /遍历对象属性,name是对象的属性名,再函数顶部已声明 /很多人

6、不太习惯for(var name in object)方式,假如不进行声明,则name就会被定义为全局变量 for (name in object) /调用callback回调函数,且回调函数的作用域表示为当前属性的值 /如:callback() this; /函数中的this指向当前属性值 /将each的第3个参数args作为回调函数的附加参数 if (callback.apply(objectname, args) = false) /假如在callback回调函数中用法return false;则不执行下一次循环 break; /需要遍历的是一个数组 else /循环长度,循环变量i在函

7、数顶部已定义 /循环变量的自增在循环内部执行 for (; i length;) /调用callback函数,与上面说明的callback调用全都 /此处callback函数中的this指向当前数组元素 if (callback.apply(objecti+, args) = false) break; /回调函数没有附加参数时,执行其次个分支 else /需要遍历的是一个对象 if (isObj) /循环对象的属性名,name在函数顶部已定义 for (name in object) /调用callback回调函数 /在不带参数的对象遍历中,作用域表示为当前属性的值 /且回调函数包含两个参数

8、,第一个数当前属性名,其次个是当前属性值 /我觉得这句代码修改一下会更好用:if(callback.call(object, name, objectname) = false) if (callback.call(objectname, name, objectname) = false) /假如在callback回调函数中用法return false;则不执行下一次循环 break; /需要遍历的是一个数组 else /这里的for写法有点BT,说明为: /var value = object0; /for(; i length;) / if(false = callback.call(value, i, value) / break; / / value = object+i; / /同样,我觉得这里的代码稍加修改会更好用: /for (; i length false != callback.call(object, i, objecti+);) / for (var value = object0; i length callback.call(value, i, value) != false; value = object+i) /这里返回遍历的对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论