2011-10-10 57 views
2

我试图模仿这个网站上的投票决定系统。有没有简单的方法来移动在jQuery中的div的位置(动画)?用jQuery重新排列div位置?

说我有以下项目:

<div id="items"> 
    <div id="item1">item 1</div> 
    <div id="item2">item 2</div> 
    <div id="item3">item 3</div> 
</div> 

我希望能够调用这将平滑移动项目3向上移动一个位置的功能:

<div id="items"> 
    <div id="item1">item 1</div> 
    <div id="item3">item 3</div> 
    <div id="item2">item 2</div> 
</div> 

有什么简单的方法来做到这一点在jQuery中?

回答

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'); 
     }); 
    } 
}); 

Demo

基本上是:

  1. 抓住要移动($div
  2. 元素
  3. 淡出(给出一个不错的UI效果与fadeOut()
  4. 之前或上一个/下一个项目后,其移动(与insertBefore()insertAfter()
  5. 重新褪色它放回(与fadeIn()另一UI效果)
+0

哇,谢谢!这绝对足以让我开始。 –