JavaScript对dom元素遍历的代码示例

 更新时间:2026年09月09日 09:27:23   作者:研☆香  
在 jQuery 开发中,我们经常会拿到一组 DOM 对象集合,需要批量操作里面每一个元素,原生 JS 可以用 for、forEach 循环,而 jQuery 提供了专属的 $(selector).each() 遍历方法,本文结合思维导图梳理 each() 的用法、特性、坑点以及代码示例,需要的朋友可以参考下

一、前言

在 jQuery 开发中,我们经常会拿到一组 DOM 对象集合,需要批量操作里面每一个元素。原生 JS 可以用 for、forEach 循环,而 jQuery 提供了专属的 $(selector).each() 遍历方法,专门用来处理 jQuery 对象集合,支持链式调用,使用非常高频。本文结合思维导图梳理 each() 的用法、特性、坑点以及代码示例。

二、$(selector).each()核心特性

$(selector).each(function(index,domEle){
    // 循环内部逻辑
})
  1. 作用:遍历 jQuery 对象集合中的 DOM 元素 $(selector) 获取到的是 jQuery 包装对象,内部封装了一组 DOM 元素。.each() 会逐个取出集合里的每一个原生 DOM,执行回调函数。

注意:回调函数里第二个参数 domEle 是原生 DOM 对象,不是 jQuery 对象,如果要使用 jQuery 方法,需要转成 $(domEle)。

  1. 支持链式调用 each() 执行完成之后依旧返回原来的 jQuery 对象,所以可以继续链式写其他 jQuery 方法。
// each遍历完成后继续调用css链式操作
$("li").each(function(i,el){
    console.log(i,el.innerHTML);
}).css("color","red");
  1. 返回值:jQuery 对象 不管循环内部做了什么操作,$(selector).each() 的返回结果始终是调用它的 jq 对象,不会返回 回调函数的 return 值。这点和数组 Array.forEach() 不一样,数组 forEach 返回 undefined。
  2. 回调函数内处理每一个元素 回调函数自带两个形参:
  • index:当前遍历元素的索引,从 0 开始;
  • domEle:当前遍历到的原生 DOM 元素,等价于回调内部的 this。
$("li").each(function(index, domEle) {
    console.log(index);         // 索引
    console.log(domEle.innerText); // 原生DOM读取内容
    console.log($(this).text());   // this转jQuery对象调用jq方法
})

三、重要注意点:循环的终止与跳过

原生 for 循环可以使用 break 终止循环、continue 跳过本次循环。 但是在 each 的回调函数中,不能直接写 break /continue,要用 return 来模拟实现。

表格

写法效果等价原生语句
return false;终止全部循环,不再往后遍历break
return true;跳过本次循环,直接进入下一轮continue

坑点:不要写 break、continue 写在 each 回调里面,会直接报语法错误!

示例 1:return false 终止整个循环

// 遍历li,索引等于2的时候直接终止全部循环
$("li").each(function(index){
    console.log(index);
    if(index === 2){
        return false; // 相当于break,循环直接结束
    }
})

示例 2:return true 跳过本次循环

// 索引为1的时候跳过本次,不执行打印,直接下一轮
$("li").each(function(index){
    if(index === 1){
        return true; // 等价continue,跳过本次
    }
    console.log(index);
})

四、补充:$.each () 与 $(selector).each () 的区别(容易混淆)

很多同学会混淆两个 each:

  1. $(selector).each():jQuery 对象方法,专门遍历 DOM 元素集合;
  2. $.each(obj,callback):jQuery 静态工具方法,可以遍历数组、普通对象,不限于 DOM。
// 工具方法遍历普通数组
$.each([10,20,30],function(i,val){
    console.log(i,val)
})

开发 DOM 批量操作优先使用 $(selector).each();遍历普通数组 / 对象用 $.each()。

五、和原生 Array.forEach 的对比

  1. forEach:只能遍历数组,不能直接遍历 jq 对象集合;返回 undefined;回调内部 return 不能终止循环。
  2. $(selector).each():专门处理 jq 包装的 DOM 集合;返回 jq 对象支持链式;通过 return false/true 实现 break、continue 逻辑。

六、常见业务场景示例

需求:批量给列表项设置样式,遇到指定条件就停止遍历

<ul>
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>
    <li>item4</li>
</ul>
$("ul li").each(function(idx,ele){
    let text = $(ele).text();
    if(text === "item3"){
        return false; // 找到item3直接终止循环,后面item4不会执行
    }
    $(ele).css("background-color","#eee");
})

七、总结

  1. $(selector).each() 用于遍历 jQuery 对象内的 DOM 元素集合,回调接收索引、原生 DOM 两个参数;
  2. 方法返回 jQuery 对象,支持链式调用;
  3. each 回调中禁止直接写 break /continue;return false 终止全部循环;return true 跳过本次;
  4. 区分实例方法 .each() 和静态工具方法 $.each(),前者面向 DOM,后者面向数组、普通对象。

小提示:现在 ES6 + 时代很多场景可以把 jq 对象转数组用 for...of,但是老项目维护中,each() 依然是高频 API。

以上就是JavaScript对dom元素遍历的代码示例的详细内容,更多关于JavaScript dom元素遍历的资料请关注脚本之家其它相关文章!

相关文章

  • 前端八股之axios封装实例详解

    前端八股之axios封装实例详解

    Axios是一个基于promise网络请求库,作用于node.js和浏览器中,这篇文章主要介绍了前端八股之axios封装的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-08-08
  • 详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)

    详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)

    本篇文章主要介绍了webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件) ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • js中方法重载如何实现?以及函数的参数问题

    js中方法重载如何实现?以及函数的参数问题

    js中没有办法直接实现方法重载,但每一个函数都有一个特殊的参数arguments,利用它可以实现方法的重载,具体示例如下
    2013-08-08
  • JavaScript代码简单实现求杨辉三角给定行的最大值

    JavaScript代码简单实现求杨辉三角给定行的最大值

    求杨辉三角给定行的最大值的的方法或许有很多,下面使用js代码简单实现下,感兴趣的朋友可以参考下
    2013-10-10
  • 前端JS如何创建一个可随时取消的定时器

    前端JS如何创建一个可随时取消的定时器

    这篇文章主要为大家详细介绍了前端JavaScript如何创建一个可随时取消的定时器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-08-08
  • javascript的currying函数介绍

    javascript的currying函数介绍

    curring的概念将函数式编程的概念和默认参数以及可变参数结合在一起.一个带n个参数,curried的函数固化第一个参数为固定参数,并返回另一个带n-1个参数的函数对象,分别类似于LISP的原始函数car和cdr的行为。currying能泛化为偏函数应用(partial function application, PFA),p 这种函数将任意数量(顺序)的参数的函数转化为另一个带剩余参数的函数对象
    2012-02-02
  • ES6新特性三: Generator(生成器)函数详解

    ES6新特性三: Generator(生成器)函数详解

    这篇文章主要介绍了ES6新特性之Generator(生成器)函数,简单分析了Generator(生成器)函数的功能、定义、调用方法并结合实例形式给出了相关使用技巧,需要的朋友可以参考下
    2017-04-04
  • javascript数组常用方法汇总

    javascript数组常用方法汇总

    这篇文章主要汇总了javascript中数组常用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 浅谈javascript中的instanceof和typeof

    浅谈javascript中的instanceof和typeof

    这篇文章主要简单介绍了javascript中的instanceof和typeof的相关资料,需要的朋友可以参考下
    2015-02-02
  • js仿淘宝评价评分功能

    js仿淘宝评价评分功能

    本文主要介绍了js仿淘宝评价评分功能——点击心形生成得分(有半心选择),具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论