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

如何用jQuery实现每个p元素与同层级h2兄弟元素互换位置?

问题:如何让jQuery仅交换同级兄弟元素的位置?

现有HTML结构

<div>
    <div>
        <h2 class="title">Hello 1</h2>
        <p class="content-info">good day</p>
    </div>

    <div>
        <h2 class="title">Hello 2</h2>
        <p class="content-info">good day</p>
    </div>

    <div>
        <h2 class="title">Hello 3</h2>
        <p class="content-info">good day</p>
    </div>
</div>

期望实现效果

希望每个子div里的p元素和同级的h2互换位置,最终页面呈现:

good day
Hello 1

good day
Hello 2

good day
Hello 3

错误尝试及问题

使用代码$(".content-info").insertAfter(".title");后,所有p元素被插入到每一个h2后面,出现错误效果:

good day
good day
good day
Hello 1

good day
good day
good day
Hello 2

good day
good day
good day
Hello 3

请问有没有jQuery方案能让元素仅与自己的同级兄弟互换位置?


解决方案

问题出在直接用类选择器会选中所有匹配的元素,导致每个p被插入到所有h2后面。要实现仅交换同级兄弟,需要逐个处理每个父容器内的元素,以下是两种可行方法:

方法一:遍历每个h2,操作其同级p

$(".title").each(function() {
  // 找到当前h2的同级content-info元素,插入到它前面
  $(this).siblings(".content-info").insertBefore(this);
});

方法二:遍历每个子div容器,在容器内交换元素

$("div > div").each(function() {
  // 在当前容器内分别找到h2和p
  const $p = $(this).find(".content-info");
  const $h2 = $(this).find(".title");
  // 将p插入到h2前面
  $p.insertBefore($h2);
});

两种方法的核心都是通过each()遍历单个元素/容器,确保每个p只和自己所在容器内的h2交换位置,不会干扰其他容器的元素。


内容的提问来源于stack exchange,提问作者Wilfred Chong Yung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:50:39