Déplacer contenant des éléments de haut en bas avec jquery

Merci pour toute l’aide que vous pourrez fournir! Actuellement, j’utilise un code sortingable sur l’interface utilisateur pour permettre aux utilisateurs de déplacer les éléments de haut en bas dans l’ordre. Maintenant, je souhaite atsortingbuer à chacun de ces éléments un ensemble de boutons “haut” et “bas” permettant aux utilisateurs de déplacer les éléments d’un clic à l’autre. J’ai essayé de retravailler ces billets, mais il me manque quelque chose d’évident …

jQuery Sortable Move UP / DOWN bouton déplacer vers le haut / bas dans jQuery

Je pense que d’une certaine manière, je n’applique pas l’interrogation au bon élément. Mon jsfiddle est ici: http://jsfiddle.net/kevindp78/vexw5/2/ et le code est ci-dessous.

HTML

IMG1

Info

MoreInfo

Change Order

Stuff1
IMG2

Info

MoreInfo

Change Order

Stuff2
IMG3

Info

MoreInfo

Change Order

Stuff3

JS

 $('up-button').click(function(){ $(this).parent('.leg').insertBefore.previous('.leg') }); $('.down-button').click(function(){ $(this).parent('.leg').insertAfter.next('.leg') }); 

Il y a plusieurs problèmes à résoudre dans votre code, examinons-les dans l’ordre.

Il y a d’abord $('up-button') il manque le . donc il ne sélectionnera pas les boutons.

Ensuite, vous utilisez la méthode parent() qui ne monte que d’un niveau, utilisez plutôt les parents('.leg') .

insertBefore() est une méthode qui accepte une cible quant à l’emplacement du contenu que vous avez sélectionné.

previous() n’est pas une fonction, c’est prev() place et il n’a pas besoin de paramètre car il ne fait que sélectionner l’élément précédent.

Si vous combinez toutes ces corrections, vous obtiendrez quelque chose comme ceci

 $('.up-button').click(function(){ $(this).parents('.leg').insertBefore($(this).parents('.leg').prev()); }); $('.down-button').click(function(){ $(this).parents('.leg').insertAfter($(this).parents('.leg').next()); }); 

Comme démontré sur ce violon édité http://jsfiddle.net/vexw5/6/

Vous pouvez essayer de remplacer votre JS par quelque chose comme ceci:

 $(".down").click(function () { var $parent = $(this).parents(".leg"); $parent.insertAfter($parent.next()); }); $(".up").click(function () { var $parent = $(this).parents(".leg"); $parent.insertBefore($parent.prev()); }); 

http://jsfiddle.net/vexw5/7/

Ceci est juste les bases. Il n’y a pas d’animations ou quoi que ce soit.