Ré-ordonner les positions div avec jQuery?

J’essaie de reproduire le système de vote par vote qui figure sur ce site Web. Existe-t-il un moyen simple de déplacer la position d’une div dans jQuery (avec des animations)?

Dites que j’ai les éléments suivants:

item 1
item 2
item 3

J’aimerais pouvoir appeler une fonction qui déplacerait en douceur le point 3 d’une position à l’autre:

 
item 1
item 3
item 2

Existe-t-il un moyen simple de faire cela dans jQuery?

Quelque chose comme ça peut-être:

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

Démo

Fondamentalement:

  1. Prenez l'élément que vous souhaitez déplacer ( $div )
  2. Fondu fadeOut() donne un bel effet d'interface utilisateur avec fadeOut() )
  3. Déplacez-le avant ou après l'élément précédent / suivant (avec insertBefore() ou insertAfter() )
  4. refaites le fondu dans (un autre effet d'interface utilisateur avec fadeIn() )

Oui il y a en changeant ses styles css. Modifiez sa position http://api.jquery.com/position/. Vous pouvez également essayer ceci. Comment positionner un élément par rapport à un autre avec jQuery?