用jQuery重新排序div位置?

Jon*_*mon 2 html jquery jquery-animate

我试图模仿这个网站上的投票投票系统.有没有一种简单的方法来移动jquery中的div的位置(带动画)?

说我有以下项目:

<div id="items">
  <div id="item1">item 1</div>
  <div id="item2">item 2</div>
  <div id="item3">item 3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望能够调用一个能够将项目3平稳地移动到一个位置的功能:

<div id="items">
  <div id="item1">item 1</div>
  <div id="item3">item 3</div>
  <div id="item2">item 2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法在jQuery中执行此操作?

Bra*_*tie 6

也许这样的东西:

$('.move-up').click(function(e){
    var $div = $(this).closest('div');

    // Does the element have anywhere to move?
    if ($div.index() > 0){
        $div.fadeOut('slow',function(){
            $div.insertBefore($div.prev('div')).fadeIn('slow');
        });
    }
});

$('.move-down').click(function(e){
    var $div = $(this).closest('div');

    // Does the element have anywhere to move?
    if ($div.index() <= ($div.siblings('div').length - 1)){
        $div.fadeOut('slow',function(){
            $div.insertAfter($div.next('div')).fadeIn('slow');
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

演示

基本上:

  1. 抓住你想要移动的元素($div)
  2. 淡出(给出一个很好的UI效果fadeOut())
  3. 在上一个/下一个项目之前或之后移动它(带insertBefore()insertAfter())
  4. 重新淡化它(另一个UI效果fadeIn())