当前位置: 首页 > news >正文

jQuery 遍历 - 后代

jQuery 遍历 - 后代元素 (Descendants)

在 jQuery 中,后代遍历用于从当前选中的元素向下查找其子元素、孙元素等所有后代节点。这是 DOM 操作中最常用的功能之一。

一、核心方法

1.children()- 获取直接子元素

只返回一级子元素(直接后代),不包含孙元素及更深层级的节点。

// 语法$(selector).children();$(selector).children("selector");// 可选:过滤特定子元素// 示例$("ul").children();// 返回 ul 下所有的直接子元素 (通常是 li)$("ul").children("li");// 返回 ul 下所有的直接 li 子元素$("div").children(".item");// 返回 div 下 class 为 item 的直接子元素

特点

  • 只遍历一层深度。
  • 忽略文本节点和注释节点,只返回元素节点。
  • 如果子元素嵌套了其他标签,不会递归获取更深层级。

2.find()- 获取所有后代元素

返回选中元素下的所有后代元素(包括子、孙、曾孙等所有层级)。

// 语法$(selector).find("selector");// 示例$("ul").find("li");// 返回 ul 下所有的 li (包括嵌套在 li 里的 li)$("div").find(".active");// 返回 div 下所有 class 为 active 的后代$("form").find("input");// 返回 form 下所有的 input 标签

特点

  • 递归遍历所有层级。
  • 必须传入选择器(不能像children()那样不带参数获取所有子元素,虽然带*选择器可以达到类似效果)。
  • 性能通常比children()稍慢,因为需要遍历更深的 DOM 树。

二、方法对比

方法遍历深度是否需选择器性能典型场景
children()仅直接子级可选获取列表项、直接容器
find()所有后代必须搜索表单控件、深层嵌套元素

示例对比

<divid="parent"><divclass="child"><divclass="grandchild">孙元素</div></div></div><script>$("#parent").children(".child");// 返回:.child (1个)$("#parent").find(".child");// 返回:.child (1个)$("#parent").children(".grandchild");// 返回:空 (0个)$("#parent").find(".grandchild");// 返回:.grandchild (1个)</script>

三、代码示例

场景 1:获取列表项并处理

<ulid="menu"><li>首页<ul><li>新闻</li><li>体育</li></ul></li><li>关于</li></ul><script>// 只获取一级菜单项 (直接子 li)$("#menu").children("li").css("font-weight","bold");// 获取所有菜单项 (包括嵌套的)$("#menu").find("li").css("color","blue");</script>

场景 2:表单数据收集

// 获取表单内所有的输入控件 (无论嵌套多深)varinputs=$("#myForm").find("input, select, textarea");inputs.each(function(){console.log($(this).attr("name"));});

场景 3:动态内容查找

// 在动态生成的内容块中查找特定元素$(".content-block").find(".error-message").show();

四、常用技巧

1. 组合使用childrenfind

// 获取 ul 的直接子 li,然后在这些 li 内部查找所有的 span$("ul").children("li").find("span").addClass("highlight");

2. 使用通配符选择器模拟“所有子元素”

// 获取 div 下所有直接子元素 (类似 children() 不带参数)$("div").children("*");

3. 链式调用与end()

$("div").find("p")// 切换到所有 p 后代.css("color","red").end()// 回到原来的 div.children("h2")// 切换到 div 的直接 h2 子元素.css("color","blue");

4. 性能优化

  • 如果确定只需要直接子元素,优先使用children(),性能更好。
  • 如果选择器很复杂,尽量在find()中直接写完整选择器,而不是链式调用多次。
    // 推荐 (一次查找)$("div").find("ul > li.active span");// 不推荐 (多次查找,性能较差)$("div").find("ul").children("li").filter(".active").find("span");

五、注意事项

  1. 文本节点children()find()只返回元素节点,不会返回文本节点或注释节点。如果需要处理文本,需使用.contents()
  2. 选择器必须find()必须传入选择器字符串,不能像children()那样省略。
  3. 上下文find()是在当前选中元素的内部查找,不会跨越到其他分支。
  4. 空结果:如果找不到匹配的元素,返回空的 jQuery 对象,不会报错。
  5. 性能:对于深层嵌套的 DOM,find()可能会遍历大量节点,注意选择器的精确度。

六、与其他遍历方法的关系

  • 向下children()(一级),find()(所有)
  • 向上parent()(一级),parents()(所有),parentsUntil()
  • 横向siblings(),next(),prev()
  • 混合contents()(包含文本/注释),closest()(向上查找匹配)

掌握children()find()的区别,是高效进行 jQuery DOM 操作的关键。

http://www.jsqmd.com/news/674482/

相关文章:

  • 把 ABAP 变体真正用活,动态保存、加载与删除的一套做法
  • 前端交互性能优化实例
  • 国产异步SRAM单片机外扩专用存储芯片
  • 鹿城靠谱的短视频公司
  • OpenGL学习资料
  • 保姆级教程:用SwitchyOmega+GFWList规则,5分钟搞定Chrome/Firefox代理自动切换
  • WooCommerce 多联盟站点动态追加 Affiliate ID 教程
  • TrueNAS Scale存储池与磁盘健康管理深度指南:SMART测试、休眠策略与温度警报设置
  • C#合并首尾相连多段线实战
  • 基于TMS320F28035的汇川变频器源码:MD290、MD380、MD500三种型号及新的...
  • jQuery 遍历 - 祖先
  • 博通(Broadcom)数据中心交换机芯片的介绍
  • 鸿蒙市场份额飙升但国产厂商仍观望,生态差距与商业考量成阻碍
  • 22.React.js 中所谓的 “Pure Component” 是怎样的一类组件?
  • Spring Cloud Eureka停更后,我们团队是如何平滑迁移到Nacos的(附完整配置对比)
  • 极域电子教室2015版虚拟机环境搭建全流程(附Windows Server 2003镜像)
  • 从AT24C02到BMP280:手把手教你用STM32 HAL库玩转IIC,避开那些新手必踩的坑
  • 从Date到LocalDateTime:一次搞懂Java 8日期API的升级逻辑与实战迁移
  • 保姆级教程:用STM32和飞特STS3215舵机做个机械臂关节(附完整代码与协议解析)
  • 8Mb高速低功耗串行SPI SRAM嵌入式应用
  • YOLOFuse功能体验:多种融合策略,满足不同精度需求
  • 全球半导体展哪家好?2026年优质展会对比甄选顶级平台 - 品牌2026
  • 解锁BilibiliDown的5大隐藏功能:从基础下载到批量管理的完整探索指南
  • 3分钟永久激活Windows和Office:KMS_VL_ALL_AIO智能脚本终极指南
  • RMBG-1.4与Anaconda集成:Python数据科学工作流
  • 【Dify 2026多模态集成权威指南】:涵盖图像/语音/文本联合推理的7大实战陷阱与3步零代码接入法
  • 适合放在简历上的开源项目与练手项目Idea清单
  • 新手初步学习Java——从c语言到Java
  • QQ空间说说备份神器:GetQzonehistory完整使用指南
  • CSS如何创建三角箭头图标_通过border透明技巧实现