重新排序dom元素

时间:2014-05-28 09:53:02

标签: javascript jquery

我仍然会利用这个社区的专业知识和可用性 今天我的想法似乎被阻止了,我想知道是否有更好的方法来重新排序这些标签。

<h3>title</h3>
<div>a</div>
<div class="order">b</div>
<div>a</div>
<div>a</div>
<div>a</div>
<h3>title</h3>
<div>a</div>
<div>a</div>
<div class="order">b</div>
<div>a</div>
<div>a</div>
<h3>title</h3>
<div>a</div>
<div>a</div>
<div>a</div>
<div class="order">b</div>
<div>a</div>

以这种方式

<h3>title</h3>
<div class="order">b</div>
<div>a</div>
<div>a</div>
<div>a</div>
<div>a</div>
<h3>title</h3>
<div class="order">b</div>
<div>a</div>
<div>a</div>
<div>a</div>
<div>a</div>
<h3>title</h3>
<div class="order">b</div>
<div>a</div>
<div>a</div>
<div>a</div>
<div>a</div>

我试过这种方式,但似乎过于冗长的解决方案。

<script type="text/javascript">
  $(document).ready(function(){
      var h3=$('h3');
        h3.each(function(){
            var divs=$(this).nextUntil('h3').wrapAll('<div class="group"></div>');
        });

     $('div.group').each(function(){
        var a=$('<div class="temp1">temp</div>').prependTo($(this))
        var divs=a.nextUntil('div.order').detach()
        divs.appendTo($(this))
      })

     $('div.group div').unwrap()    
     $('div.temp1').remove()
  })
</script>

1 个答案:

答案 0 :(得分:2)

尝试,

$('h3').each(function(){
  $(this).nextAll('.order').first().after($(this).nextUntil('.order'));
})

DEMO

或根据我的同事的建议,

$('.order').each(function(){
 $(this).after( $(this).prevUntil("h3"));
})

DEMO I