Jquery each

简介: jQuery.each( object, callback,arg) each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象、数组的属性值并进行处理。   jQuery和jQuery对象都实现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法。

jQuery.each( object, callback,arg)

each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象、数组的属性值并进行处理。

 

jQueryjQuery对象都实现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQueryeach方法。换句话说:jQuery提供的each方法是对参数一提供的对象的中所有的子元素逐一进行方法调用。而jQuery对象提供的each方法则是对jQuery内部的子元素进行逐个调用。

   jQuery.prototype.each = function(fn, args) {

        return jQuery.each(this, fn, args);

    }

 

让我们看一下jQuery提供的each方法的具体实现,

jQuery.each(obj,fn,arg)  

该方法有三个参数:进行操作的对象obj,进行操作的函数fn,函数的参数args

让我们根据ojb对象进行讨论:

 

1.obj对象是数组

each方法会对数组中子元素的逐个进行fn函数调用,直至调用某个子元素返回的结果为false为止,也就是说,我们可以在提供的fn函数进行处理,使之满足一定条件后就退出each方法调用。当each方法提供了arg参数时,fn函数调用传入的参数为arg,否则为:子元素索引,子元素本身

2.obj 对象不是数组

该方法同1的最大区别是:fn方法会被逐次不考虑返回值的进行进行。换句话说,obj对象的所有属性都会被fn方法进行调用,即使fn函数返回false。调用传入的参数同1类似。

 

jQuery.each = function(obj, fn, args) {

        if (args) {

            if (obj.length == undefined) {

                for (var i in obj)

                    fn.apply(obj, args);

            } else {

                for (var i = 0, ol = obj.length; i < ol; i++) {

                    if (fn.apply(obj, args) === false)

                        break;

                }

 

            }

        } else {

            if (obj.length == undefined) {

                for (var i in obj)

                    fn.call(obj, i, obj);

            } else {

                for (var i = 0, ol = obj.length, val = obj[0];

i < ol && fn.call(val, i, val) !== false;

val = obj[++i]) { }

}

        }

        return obj;

}

 需要特别注意的是each方法中fn的具体调用方法并不是采用简单的fn(i,val)fn(args),而是采用了fn.call(val,i,val)fn.apply(obj.args)的形式,这意味着,在你自己的fn的实现中,可以直接采用this指针引用数组或是对象的子元素。这种方式是绝大多数jQuery所采用的一种实现方式。

 

var arr = ["one", "two", "three", "four", "five"];

var obj = { one: 1, two: 2, three: 3, four: 4, five: 5 };

 

    jQuery.each(arr, function() {

        alert(this);

    });

    /*

    one,two,three,four,five

    */

   

    jQuery.each(obj, function(i, val) {

        alert(i+":"+val);

    });

    /*

    one:1 two:2 three:3 four:4  five:5

    */

   

    jQuery.each(arr, function(i, val) {

        alert(i);

    });

    /*

    0,1,2,3,4

    */

   

    jQuery.each(arr, function(i, val) {

        alert(arr[i]);

    });

    /*

    one tow three four five

    */

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
6天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
12天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
4天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
11天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
7天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
683 17
|
6天前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
428 34
|
12天前
|
编解码 自然语言处理 文字识别
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大
凌晨,Qwen3-VL系列再添新成员——Dense架构的Qwen3-VL-8B、Qwen3-VL-4B 模型,本地部署友好,并完整保留了Qwen3-VL的全部表现,评测指标表现优秀。
729 7
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大