如何用jQuery自动为控制div间的兄弟div递增添加指定class?
自动化为兄弟元素添加递增类名的实现方案
需求
自动为位于两个带.mv-header-menu-accordion-N(N为递增数字)类的兄弟div之间的所有元素,添加.header-child-accordion和.header-child-accordion-set-N类,替代手动编写重复代码的方式。
优化实现代码
JavaScript
$(document).ready(function() { $(".header-menu-nav-folder-content").each(function() { const accordions = $(this).find('.mv-header-menu-accordion'); accordions.each(function(index) { // 跳过最后一个accordion,它后面没有下一个边界元素 if (index === accordions.length - 1) return; const setNum = index + 1; $(this).nextUntil(accordions.eq(index + 1)) .addClass(`header-child-accordion header-child-accordion-set-${setNum}`); }); }); });
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="header-menu-nav-folder-content"> <div class="mv-header-menu-accordion-1 mv-header-menu-accordion"> <p>Parent 1</p> </div> <div class=""> <p>Child 1</p> </div> <div class=""> <p>Child 2</p> </div> <div class=""> <p>Child 3</p> </div> <div class="mv-header-menu-accordion-2 mv-header-menu-accordion"> <p>Parent 2</p> </div> <div class=""> <p>Child 1</p> </div> <div class=""> <p>Child 2</p> </div> <div class=""> <p>Child 3</p> </div> <div class="mv-header-menu-accordion-3 mv-header-menu-accordion"> <p>Parent 3</p> </div> <div class=""> <p>Child 1</p> </div> <div class=""> <p>Child 2</p> </div> <div class=""> <p>Child 3</p> </div> <div class="mv-header-menu-accordion-4 mv-header-menu-accordion"> <p>Parent 4</p> </div> <div class=""> <p>Child 1</p> </div> <div class=""> <p>Child 2</p> </div> <div class=""> <p>Child 3</p> </div> </div>
逻辑说明
- 遍历每个菜单容器,确保不同区域的元素不会互相干扰
- 获取当前容器内所有父级accordion元素,避免硬编码数字限制
- 循环处理每个accordion:
- 跳过最后一个accordion(无后续边界元素)
- 计算当前集合编号(索引+1,对应原手动代码中的数字)
- 用
nextUntil()精准定位当前accordion与下一个accordion之间的所有子元素,批量添加目标类名
这种实现无需关心accordion的数量,自动适配任意数量的父级元素,彻底替代手动重复代码。
内容的提问来源于stack exchange,提问作者Houghtonator
相关产品推荐
相关产品推荐

