


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上篇读到了jquery库如何通过其中的jQuery.extend及jQuery.fn.extend去扩展自身的。这篇将分析下jQuery.each及jQuery().each方法。看看他们如何与jQuery.extend一起扩展jquery库。查看源码,我们发现里面有10多处用到$.each及$().each。jQuery1.4已发布,后续将已1.4版本作为示例。部分源码如下:Js代码1. jQuery.fn=jQtotype=2. .3. each:function(callback,args)4. returnjQuery.each(this,callback,args);5. 6. .7. 8. jQuery.extend(9. .10. each:function(object,callback,args)11. varname,i=0,12. length=object.length,13. isObj=length=undefined|jQuery.isFunction(object);14. 15. if(args)16. if(isObj)17. for(nameinobject)18. if(callback.apply(objectname,args)=false)19. break;20. 21. 22. else23. for(;ilength;)24. if(callback.apply(objecti+,args)=false)25. break;26. 27. 28. 29. /Aspecial,fast,caseforthemostcommonuseofeach30. else31. if(isObj)32. for(nameinobject)33. if(callback.call(objectname,name,objectname)=false)34. break;35. 36. 37. else38. for(varvalue=object0;39. ilength&callback.call(value,i,value)!=false;40. value=object+i)41. 42. 43. returnobject;44. 45. .46. );以上可看出,a,jQuery().each是直接挂在jQtotype(jQuery.fn)上的,因此每个jquery对象都包含each方法。b,jQuery.each是通过jQuery.extend()方式扩展的。 上一篇已经说过,通过这种方式扩展的方法将挂在function jQuery上,即为jQuery类的静态方法。c,jQuery().each方法中只有一句:return jQuery.each( this, callback, args )。 即jquery对象的each方法实现上其实就是调用jQuery静态的jQuery.each。因此jQuery.each才是关键所在。下面详细分析jQuery.each。查看源码,jQuery.each方法有三个参数:object,callback,args1:object可以为数组(Array),对象(Object),甚至是函数类型(Functoin);2:callback是回调函数,类型为function;3:args为jquery库自身使用,使用者不会用到该参数,这里暂不讨论该参数情况。jQuery.each函数中第一句定义必要的变量:Js代码1. varname,i=0,length=object.length,2. isObj=length=undefined|jQuery.isFunction(object);length=object.length很好理解,有三种情况length不为undefined。a: object为数组类型(Array)时,数组具有length属性;b: object为函数类型(Functoin)时,length为该函数定义的参数个数,如果该函数没有定义参数,length为0;c: 具有length属性的object伪数组(如:arguments,HTMLCollection,NodeList等)。 这里特意强调下objcet为jquery对象。即当在$().each时发生,这时会将this传到$.each中。 如:return jQuery.each( this, callback, args )。这里第一个参数this即为jquery对象,每个jquery对象是具有length属性的。变量isObj用来判断是否是对象类型,有两种情况为true:1,变量length等于undefined,即所传object没有length属性。2,参数object为函数类型因为暂不考虑第三个参数args的情况(即这里只讨论不传args的情况),jQuery.each可简化为如下:Js代码1. each:function(object,callback,args)2. varname,i=0,3. length=object.length,4. isObj=length=undefined|jQuery.isFunction(object);5. 6. if(isObj)7. for(nameinobject)8. if(callback.call(objectname,name,objectname)=false)9. break;10. 11. 12. else13. for(varvalue=object0;14. ilength&callback.call(value,i,value)!=false;15. value=object+i)16. 17. returnobject;18. ;如果isObj为true,则用for in语句去遍历该对象,如果把每个迭代的对象看出键值对形式的话。callback中的this是值objectname,callback第一个参数是键name,第二个参数是值objectname。如果isObj为false,则用for循环去遍历数组(类数组)。callback中的this是数组中单独元素的值value,callback第一参数是数组的索引i,第二参数是数组单独元素值value。callback调用后返回值如果是false则停止迭代,跳出循环。这里用严格=来判断是否与false相等。顺便提一下,函数如果没有显示的return,默认返回undefined。最后总结下:$
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 下传统节日作文清明节(8篇)
- 赤壁怀古:古诗文意象解读教案
- 科技之光与时代力量:初中八年级科普说明文阅读指导教案
- 时间和位移的课件
- 一年级日记看电影100字15篇
- 贵金属交易风险披露书及合同书
- 吉林省松原市前郭县2024-2025学年八年级下学期期末考试物理试题(含答案)
- 早期阅读犟龟课件
- 观少年派有感1500字(10篇)
- 纪检业务培训课件模板
- 网络安全运维培训内容
- 【中信建投】信息技术-人工智能行业AI产品深度拆解(系列1)-可灵:头部AI视频产品
- 广西桉树造林技术改进及病虫害防治措施深入研究
- 经皮肾术后护理试题及答案
- 水电站优化调度培训课件
- 2024年内科护理学(第七版)期末考试复习题库(含答案)
- 2025过敏性休克抢救指南
- 信息系统监理师(中级)考试题库(含答案)
- 公务用车管理办法解读
- 线路迁改工程施工方案
- 《西方艺术史》课程教学大纲
评论
0/150
提交评论