2010-01-14 4 views
10

Comment puis-je changer l'ordre d'une liste une fois appliquée par JS "jQuery.sortable".jQuery.sortable. changer la commande par JS

Par exemple:

<ul id="mylist"> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
</ul> 

var x_sortable_list = $("mylist").sortable(); 

puis, en supposant que cela fonctionne:

x_sortable_list.changeOrder([ 
{item:1, newOrder:2 }, 
{item:2, newOrder:1 }, 
{item:3, newOrder:3 } 
]); 

Répondre

11

Comme Sparr a dit, il n'y a aucun moyen de trier les utiliser sortable directement, mais vous pouvez toujours les déplacer manuellement avec quelque chose comme:

$("#mylist li:eq(1)").insertAfter($("#mylist li:eq(2)")); 
1

Le triables fournit une interface utilisateur pour réagencer les éléments. Pour les réorganiser par programme, vous devez toujours manipuler les éléments vous-même, manuellement ou avec un autre plugin.

+7

oui, c'est ma question, comment dois-je faire cela? –

16

Comme d'autres l'ont mentionné, cela n'a rien à voir avec le triables() fonctionnalité. Au lieu de cela, vous devez récupérer les éléments de la liste, déplacer leurs positions et claire et re-insérer les éléments de liste à nouveau dans leur nouvel ordre:

// Get your list items 
var items = $('#mylist').find('li'); 

// The new index order for each item 
var order = [4, 2, 0, 1, 3]; 

// Map the existing items to their new positions   
var orderedItems = $.map(order, function(value) { 
    return items.get(value); 
}); 

// Clear the old list items and insert the newly ordered ones 
$('#mylist').empty().html(orderedItems); 
+0

Fonctionne comme un charme! :) –

+0

Fonctionne vraiment bien. Merci. –

Questions connexes