多元素中的jQuery操作

多元素中的jQuery操作,jquery,loops,Jquery,Loops,我有多个部分。。。在这些部分中,几乎没有子元素。。。我需要对每个部分进行操作,以便在另一个元素(例如h1)之后移动1个元素(例如内部) 我的尝试就在这里,但问题是它没有循环通过并在最后打印好。。但我希望输出不同,如下所示 初始状态: <section class="greeting"> <h2>Greetings 1</h2> <div class="time">Morning</div> <div class="in

我有多个部分。。。在这些部分中,几乎没有子元素。。。我需要对每个部分进行操作,以便在另一个元素(例如h1)之后移动1个元素(例如内部)

我的尝试就在这里,但问题是它没有循环通过并在最后打印好。。但我希望输出不同,如下所示

初始状态:

<section class="greeting">
  <h2>Greetings 1</h2>
  <div class="time">Morning</div>
  <div class="inner">Good 1</div>
</section>

<br />
<br />

<section class="greeting">
  <h2>Greetings 1</h2>
  <div class="time">Afternoon</div>
  <div class="inner">Good 2</div>
</section>

<br />
<br />

<section class="greeting">
  <h2>Greetings 1</h2>
  <div class="time">night</div>
  <div class="inner">Good 3</div>
</section>

问候1
早晨
好的1


问候1 下午 好的2

问候1 夜 好3
操纵后

<section class="greeting">
  <h2>Greetings 1</h2>
  <div class="inner">Good 1</div>
  <div class="time">Morning</div>
</section>

<br />
<br />

<section class="greeting">
  <h2>Greetings 1</h2>
  <div class="inner">Good 2</div>
  <div class="time">Afternoon</div>
</section>

<br />
<br />

<section class="greeting">
  <h2>Greetings 1</h2>
  <div class="inner">Good 3</div>
  <div class="time">night</div>
</section>

问候1
好的1
早晨


问候1 好的2 下午

问候1 好3 夜
试试这个:

$(".greeting").each(function() {
    $(this).children('div:eq(0)').before($(this).children('div:eq(1)'));
});


演示:原始代码有两个问题:

$(".greeting").each(function() {
    $(this).children('.time').addClass("on");
    $(this).children('.time').after($('.inner'));
});
1)您正在使用
internal
类选择要移动的所有元素:

$('.inner')
Intead,仅使用当前div中的一个:

$(this).children('.inner')
2)您正在使用
after
函数,该函数将作为参数传递的内容插入到调用该函数的元素之后。另一方面,
insertAfter
以相反的方式运行。发件人:

对于.after(),方法前面的选择器表达式是 在其之后插入内容的容器。带.insertAfter(),在 另一方面,内容位于方法之前,或者作为选择器 表达式或作为动态创建的标记,并在 目标容器

因此,您可以将代码更改为:

$(".greeting").each(function() {
    $(this).children('.time').addClass("on");
    $(this).children('.time').insertAfter($(this).children('.inner'));
});
或者这个:

$(".greeting").each(function() {
    $(this).children('.time').addClass("on");
    $(this).children('.inner').after($(this).children('.time'));
});

如果一个答案解决了你的问题,你应该接受它。
$(".greeting").each(function() {
    $(this).children('.time').addClass("on");
    $(this).children('.inner').after($(this).children('.time'));
});