【Java 进阶篇】JQuery 遍历 —— 无尽可能性的 `each` 之旅

news2025/1/10 2:08:10

在这里插入图片描述

在前端的征途中,操作元素是开发者不可避免的任务之一。而在 JQuery 中,each 方法则是处理这个任务的得力助手。本文将深入探讨 each 方法的奇妙之处,以及它与原生的 for...of 循环的关系,带你领略无尽可能性的遍历之旅。

起步:重新认识 each

在 JQuery 中,each 方法是一种遍历集合的强大方式。它允许你对集合中的每个元素执行特定的操作,是一种高度灵活的遍历工具。首先,我们来看一下 each 方法的基本语法:

$.each(collection, function(index, value) {
    // 对每个元素执行的操作
});
  • collection:要遍历的集合,可以是数组、对象或类数组对象。
  • function(index, value):在集合中每个元素上执行的函数,其中 index 是元素的索引,value 是元素的值。

each 方法的真正妙处在于它的灵活性。无论是数组、对象还是其他类型的集合,each 都能游刃有余地完成遍历任务。

用代码感受 each 的魔法

首先,我们通过一个简单的例子来感受一下 each 方法的神奇之处。在这个例子中,我们有一个包含数字的数组,我们将使用 each 方法遍历数组,并将每个数字输出到控制台:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQuery each 方法示例</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
    <script>
        $(document).ready(function() {
            // 定义一个包含数字的数组
            var numbers = [1, 2, 3, 4, 5];

            // 使用 each 方法遍历数组
            $.each(numbers, function(index, value) {
                // 输出每个数字到控制台
                console.log("第" + (index + 1) + "个数字是:" + value);
            });
        });
    </script>
</body>
</html>

在这个例子中,我们通过 each 方法遍历了 numbers 数组,并使用回调函数输出了每个数字到控制台。这展示了 each 方法的简单用法,但实际上它的应用远不止于此。

更进一步:each 的无限可能

1. 遍历数组

each 方法对数组的遍历是最为直观的。在下面的例子中,我们使用 each 方法遍历一个包含颜色名称的数组,并在页面上创建对应颜色的块元素:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQuery each 方法示例</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
    <style>
        .color-block {
            width: 100px;
            height: 100px;
            margin: 5px;
            display: inline-block;
        }
    </style>
</head>
<body>
    <script>
        $(document).ready(function() {
            // 定义一个包含颜色名称的数组
            var colors = ["red", "green", "blue", "yellow", "purple"];

            // 使用 each 方法遍历数组,并创建对应颜色的块元素
            $.each(colors, function(index, value) {
                // 创建块元素
                var block = $("<div></div>").addClass("color-block").css("background-color", value);
                // 在 body 中追加块元素
                $("body").append(block);
            });
        });
    </script>
</body>
</html>

在这个例子中,我们使用 each 方法遍历了 colors 数组,并根据每个颜色创建了一个块元素。通过这样的方式,我们可以动态地生成页面上的元素,而不需要手动编写每个元素的代码。

2. 遍历对象

each 方法不仅可以用于数组,还可以用于遍历对象的属性。在下面的例子中,我们有一个包含学生信息的对象,我们使用 each 方法遍历这个对象,并在页面上显示学生的姓名和年龄:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQuery each 方法示例</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
    <script>
        $(document).ready(function() {
            // 定义一个包含学生信息的对象
            var students = {
                student1: { name: "Alice", age: 20 },
                student2: { name: "Bob", age: 22 },
                student3: { name: "Charlie", age: 21 }
            };

            // 使用 each 方法遍历对象,并显示学生的姓名和年龄
            $.each(students, function(studentId, studentInfo) {
                // 创建包含学生信息的字符串
                var studentString = "学生ID:" + studentId + ",姓名:" + studentInfo.name + ",年龄:" + studentInfo.age;
                // 在 body 中追加包含学生信息的段落
                $("body").append("<p>" + studentString + "</p> 
            }
        }
    </script>
</body>
</html>

3. 修改元素属性

each 方法不仅可以用于遍历集合,还可以在遍历的过程中修改元素的属性。在下面的例子中,我们使用 each 方法遍历包含图片路径的数组,并将这些路径应用到页面上的图片元素的 src 属性:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQuery each 方法示例</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
    <img id="image1" alt="Image 1">
    <img id="image2" alt="Image 2">
    <img id="image3" alt="Image 3">

    <script>
        $(document).ready(function() {
            // 定义一个包含图片路径的数组
            var imagePaths = ["path/to/image1.jpg", "path/to/image2.jpg", "path/to/image3.jpg"];

            // 使用 each 方法遍历数组,并修改图片元素的 src 属性
            $.each(imagePaths, function(index, path) {
                // 构建图片元素的 ID
                var imageId = "image" + (index + 1);
                // 修改图片元素的 src 属性
                $("#" + imageId).attr("src", path);
            });
        });
    </script>
</body>
</html>

在这个例子中,我们定义了一个包含图片路径的数组 imagePaths,然后使用 each 方法遍历了这个数组。在遍历的过程中,我们通过拼接字符串构建了每个图片元素的 ID,然后使用 attr 方法修改了图片元素的 src 属性。

更多可能性:全局 each 与原生 for...of

在介绍全局 each 之前,我们先来了解一下原生的 for...of 循环。for...of 是 ECMAScript 6 新增的一种遍历集合的方式,它更加直观和语义化。下面是一个简单的例子:

// 遍历数组
const numbers = [1, 2, 3, 4, 5];
for (const number of numbers) {
    console.log(number);
}

// 遍历字符串
const str = "Hello";
for (const char of str) {
    console.log(char);
}

// 遍历 Map
const myMap = new Map();
myMap.set("a", 1);
myMap.set("b", 2);
for (const [key, value] of myMap) {
    console.log(key, value);
}

这里我们通过 for...of 循环遍历了数组、字符串和 Map 对象。它的语法简洁,代码可读性强。

全局 each

JQuery 的 each 方法是基于回调函数的遍历方式,而全局的 each 是一种无需回调函数的遍历方式,它允许你直接在集合上执行操作。全局 each 的语法如下:

$.each(collection, function(index, value) {
    // 对每个元素执行的操作
});

相比于 for...of,全局 each 语法稍显繁琐。但它仍然是一种灵活、强大的遍历方式。下面通过示例演示全局 each 的使用:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>全局 each 示例</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
    <script>
        $(document).ready(function() {
            // 遍历数组
            $.each([1, 2, 3, 4, 5], function(index, value) {
                console.log("数组元素索引:" + index + ",值:" + value);
            });

            // 遍历对象
            $.each({ a: 1, b: 2, c: 3 }, function(key, value) {
                console.log("对象属性名:" + key + ",值:" + value);
            });

            // 遍历类数组对象
            $.each(document.querySelectorAll('p'), function(index, element) {
                console.log("段落索引:" + index + ",文本内容:" + element.textContent);
            });
        });
    </script>
</body>
</html>

在这个例子中,我们分别使用全局 each 遍历了数组、对象和文档中的段落元素。这展示了全局 each 的灵活性,无论是数组、对象还是类数组对象,都能轻松应对。

比较全局 each 与原生 for...of

  • 可读性for...of 循环更加直观和语义化,尤其适用于数组和可迭代对象的遍历。全局 each 在遍历数组时需要添加一个回调函数,可能稍显繁琐。

  • 适用范围for...of 循环适用于所有可迭代对象,包括数组、字符串、Map 等。全局 each 更加灵活,可以遍历数组、对象、类数组对象等,但在语义上更偏向于数组和类数组对象的遍历。

  • 语法差异for...of 循环的语法相对简单,不需要引入 JQuery。全局 each 需要引入 JQuery,并且语法稍显繁琐。

小结

通过本文的介绍,你应该对 each 方法及全局 each 有了更深入的了解。它们是 JQuery 中非常有用的工具,能够帮助你轻松地遍历集合,并在遍历的过程中执行各种操作。无论是数组、对象还是其他类数组对象,each 方法都能胜任。全局 each 则提供了一种无需回调函数的遍历方式,更加灵活。

在实际开发中,选择使用 each 还是原生的 for...of 取决于具体的需求和个人偏好。在遍历数组时,特别是在 JQuery 已经被使用的项目中,each 无疑是一个强大而方便的选择。而在新项目中,或者需要遍历各种可迭代对象时,原生的 for...of 循环可能更为合适。希望通过本文的学习,你能更加熟练地运用这两种遍历方式,让你的前端代码更加出色。加油,少年!在无尽的遍历之旅中,愿你发现更多的乐趣和技巧。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1221088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9款AI让你在2分钟内创建任何东西

1、免费AI绘画&#xff1a;LeonardoAi一个免费的 Midjourney 替代品&#xff0c;能够快速创建高品质和风格统一的视觉图片&#xff0c;帮你释放创造力。 2、 模板编辑AI&#xff1a;Canva 将所有AI的强大功能汇聚于一处&#xff0c;为你的工作流程注入超级动力。 3、构建网站&…

基于51单片机步进电机节拍步数正反转LCD1602显示( proteus仿真+程序+原理图+设计报告+讲解视频)

基于51单片机步进电机节拍步数正反转LCD1602显示 &#x1f4d1;1. 主要功能&#xff1a;&#x1f4d1;2. 讲解视频&#xff1a;&#x1f4d1;3. 仿真&#x1f4d1;4. 程序代码&#x1f4d1;5. 设计报告&#x1f4d1;6. 设计资料内容清单&&下载链接&#x1f4d1;[资料下…

SpringCloud FeignClient声明式服务调用采坑记录(A调用服务B/C,B/C重启后必须重启A后才能成功调用配置项)

SpringCloud FeignClient声明式服务调用&#xff08;A调用服务B/C&#xff0c;B/C重启后必须重启A后才能成功调用配置项采坑记录&#xff09; 1. 报错&#xff08;info级别的警告信息&#xff09;2. 原因&#xff1a;使用了默认了cache负载均衡&#xff0c;或者禁用了ribbonLoa…

数据结构02附录01:顺序表考研习题[C++]

图源&#xff1a;文心一言 考研笔记整理~&#x1f95d;&#x1f95d; 之前的博文链接在此&#xff1a;数据结构02&#xff1a;线性表[顺序表链表]_线性链表-CSDN博客~&#x1f95d;&#x1f95d; 本篇作为线性表的代码补充&#xff0c;每道题提供了优解和暴力解算法&#xf…

基于蝠鲼觅食算法优化概率神经网络PNN的分类预测 - 附代码

基于蝠鲼觅食算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蝠鲼觅食算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蝠鲼觅食优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

YOLOv5项目实战(4)— 简单三步,教你按比例划分数据集

前言:Hello大家好,我是小哥谈。本节课就教大家如何去按照比例去划分数据集,希望大家学习之后可以有所收获!~🌈 前期回顾: YOLOv5项目实战(1)— 如何去训练模型 YOLOv5项目

【C#】类型转换-显式转换:括号强转、Parse法、Convert法、其他类型转string

目录 一、括号强转 1.有符号整型 2.无符号整型 3.浮点之间 4.无符号和有符号 5.浮点和整型 6.char和数值类型 7.bool和string是不能够通过 括号强转的 二、Parse法 1.有符号 2.无符号 3.浮点型 4.特殊类型 三、Convert法 1.转字符串 2.转浮点型 3.特殊类型转换…

基于黄金正弦算法优化概率神经网络PNN的分类预测 - 附代码

基于黄金正弦算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于黄金正弦算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于黄金正弦优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

vite+vue3+electron开发环境搭建

环境 node 18.14.2 yarn 1.22 项目创建 yarn create vite test01安装vue环境 cd test01 yarn yarn dev说明vue环境搭建成功 安装electron # 因为有的版本会报错所以指定了版本 yarn add electron26.1.0 -D安装vite-plugin-electron yarn add -D vite-plugin-electron根目…

视百年眼科青少年近视防控中心正式启动,构建近视防控新格局

11月16日上午&#xff0c;广州视百年眼科青少年近视防控中心启动仪式在门诊顺利举行。视百年眼科董事长孙联合、技术院长李国保、视光中心负责人肖萧、视光主任刘得圳出席会议并对如何做好青少年近视防控工作作出了工作部署。 视百年眼科孙董事长在会上强调&#xff0c;青少年是…

opencv dnn模块 示例(23) 目标检测 object_detection 之 yolov8

文章目录 1、YOLOv8介绍1.1、概述1.2、骨干网络和 Neck1.3、Loss 计算1.4、数据增强1.5、训练策略1.6、推理过程 2、测试2.1、官方Python测试2.2、Opencv dnn测试2.3、测试统计 3、训练4、Yolov8-pose 简单使用 1、YOLOv8介绍 YOLOv3之前的所有YOLO对象检测模型都是用C语言编写…

河北大学选择ZStack Cube超融合一体机打造实训云平台

河北大学通过云轴科技ZStack Cube超融合一体机构建校园实训云平台&#xff0c;部署测试仅耗时1天&#xff0c;该平台能够更快地为学生提供高性能、高可用的云主机、云存储和云网络服务&#xff1b;同时也能满足日常运维管理要求&#xff0c;为学生提供更好的实训环境。 河北省…

基于SSM+Vue的校园共享单车管理系统

基于SSMVue的校园共享单车管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringMyBatisSpringMVC工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 用户界面 摘要 随着城市交通的不断发展和人们出…

SystemVerilog学习 (11)——覆盖率

目录 一、概述 二、覆盖率的种类 1、概述 2、分类 三、代码覆盖率 四、功能覆盖率 五、从功能描述到覆盖率 一、概述 “验证如果没有量化&#xff0c;那么就意味着没有尽头。” 伴随着复杂SoC系统的验证难度系数成倍增加&#xff0c;无论是定向测试还是随机测试&#xff…

目标检测—YOLO系列(二 ) 全面解读论文与复现代码YOLOv1 PyTorch

精读论文 前言 从这篇开始&#xff0c;我们将进入YOLO的学习。YOLO是目前比较流行的目标检测算法&#xff0c;速度快且结构简单&#xff0c;其他的目标检测算法如RCNN系列&#xff0c;以后有时间的话再介绍。 本文主要介绍的是YOLOV1&#xff0c;这是由以Joseph Redmon为首的…

Linux:常见指令

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》 文章目录 前言一、常见指令ls指令pwd指令cd指令touch指令mkdir指令rmdir指令rm指令man指令cp指令mv指令cat指令tac指令echo指令more指令less指令head指令tail指令date显示Cal指令find指令gr…

基于深度学习的活体人脸识别检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 活体人脸识别检测算法概述 4.2. 深度学习在活体人脸识别检测中的应用 4.3. 算法流程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 …

React项目首页中用canvas实现星空

文章目录 前言代码使用后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家…

网申线上测评,要不要找人代做在线测评?

这是知乎上看来的问题&#xff0c;感触颇多&#xff0c;于是决定针对这个问题写个稿子&#xff0c;希望能帮助到更多人朋友。 原文如下&#xff1a;现在各大公司在招聘时通常都会采取网申发OT筛选的形式&#xff0c;但是由于难度较大&#xff0c;不少人会选择付钱找别人代做的方…

mysql中的各种日志文件redo log、undo log和binlog

mysql中的各种日志文件redo log、undo log和binlog mysql中的各种日志文件redo log、undo log和binlog1.MySQL日志文件类型2.redo log日志2.1 作用2.2工作原理&#xff1a;2.3详解 3.undo log日志4.binlog日志5.总结 mysql中的各种日志文件redo log、undo log和binlog 1.MySQL…