You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery将h2分隔的同class.box元素组包裹进wrapper

解决jQuery中按<h2>分隔的.box元素组包裹问题

需求说明

将被<h2>元素分隔的所有.box元素组,分别包裹到class为wrapper的<div>容器中。

原始HTML代码

<div class="container">
  <div class="box">box1</div>
  <div class="box">box2</div>
  <div class="box">box3</div>
  <div class="box">box4</div>
  <h2>heading2</h2>
  <div class="box">box1</div>
  <div class="box">box2</div>
  <div class="box">box3</div>
  <div class="box">box4</div>
  <h2>heading2</h2>
  <div class="box">box1</div>
  <div class="box">box2</div>
  <div class="box">box3</div>
  <div class="box">box4</div>
</div>

期望实现效果

<div class="container">
 <div class="wrapper">
  <div class="box">box1</div>
  <div class="box">box2</div>
  <div class="box">box3</div>
  <div class="box">box4</div>
 </div>
  <h2>heading2</h2>
 <div class="wrapper">
  <div class="box">box1</div>
  <div class="box">box2</div>
  <div class="box">box3</div>
  <div class="box">box4</div>
 </div>
   <h2>heading2</h2>
 <div class="wrapper">
  <div class="box">box1</div>
  <div class="box">box2</div>
  <div class="box">box3</div>
  <div class="box">box4</div>
 </div>
</div>

问题分析

之前尝试的代码会导致每个.box被单独包裹,核心原因是遍历了所有.box元素,每组内的每个.box都会执行一次wrapAll:

$(".box").each(function (index) {
    $(this).nextUntil("h2").addBack().wrapAll("<div class='wrapper' />");
});

当第一组的第一个.box执行wrapAll后,该组的.box已经被包裹到wrapper中,后续的.box再执行时,nextUntil("h2")无法找到同组的其他.box,只能单独包裹自身。

解决方案

只需要遍历每组的第一个.box,再对该组执行wrapAll即可,有两种实现方式:

方式一:利用相邻选择器筛选组首.box

// 筛选出前面不是.box的元素(即每组的第一个.box)
$(".box").not(".box + .box").each(function() {
  $(this).nextUntil("h2").addBack().wrapAll("<div class='wrapper'></div>");
});

方式二:通过前置元素判断组首.box

$(".container > .box").filter(function() {
  var prevEl = $(this).prev();
  // 要么是容器的第一个子元素,要么前置元素是h2
  return prevEl.length === 0 || prevEl.is("h2");
}).each(function() {
  $(this).nextUntil("h2").addBack().wrapAll("<div class='wrapper'></div>");
});

这两种方式都会只针对每组的第一个.box执行包裹操作,确保整组.box被统一包在wrapper中。


内容的提问来源于stack exchange,提问作者Anta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:10:57