将元素2向上移动

时间:2019-04-12 08:48:43

标签: javascript jquery html next

我正在尝试将元素向上移动两个位置

我尝试了很多不同的选择,但是我做对了…… 这是我的最新代码:

<div id="basket">
   <dl>
      <dt>Element 1</dt>
      <dd class="price">£32.00</dd>
      <dd class="qty"> 1x </dd>  //Need to move this element 2 levels up, right before dt

      <dt>Element 2</dt>
      <dd class="price">£6.00</dd>
      <dd class="qty"> 1x </dd>  //But this one as well
   </dl>            
</div>
$("#basket dd.qty").each(function() {
   var e = $(this);
   e.prevAll("dt").insertAfter(e);
});

基于上面的代码,我想在.qty之前的dt之前显示它,因此结果应该是:

<dd class="qty"> 1x </dd>
<dt>Element 2</dt>
<dd class="price">£6.00</dd>

1 个答案:

答案 0 :(得分:2)

您可以这样做:

$('#Basket .qty').each(function() {
  var sib = $(this).prev().prev()
  sib.before($(this))
});

$('#Basket .qty').each(function() {
  var sib = $(this).prev().prev()
  sib.before($(this))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="Basket">
  <dl>
    <dt>Element 1</dt>
    <dd class="price">£32.00</dd>
    <dd class="qty"> 1x </dd>

    <dt>Element 2</dt>
    <dd class="price">£6.00</dd>
    <dd class="qty"> 1x </dd>
  </dl>
</div>

请注意,理想的用法是在<dt>之前放置<dd>