2010-01-14 5 views
10

Wie kann ich die Reihenfolge einer Liste ändern, sobald sie von JS "jQuery.sortable" angewendet wird.jQuery.sortable. Ändern der Reihenfolge von JS

Zum Beispiel:

<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(); 

dann, dies unter der Annahme zu arbeiten:

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

Antwort

11

Wie Sparr gesagt hat, gibt es keine Möglichkeit, sie zu sortieren sortable direkt verwenden, aber man kann sie immer noch von Hand wie mit etwas bewegen:

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

Die sortierbar stellt eine Benutzeroberfläche für die Elemente neu anordnen. Um sie programmatisch neu zu ordnen, müssen Sie die Elemente selbst manuell oder mit einem anderen Plugin bearbeiten.

+7

ja, das ist meine Frage, wie kann ich das tun? –

16

Wie andere schon erwähnt haben, hat dies nichts mit dem sortierbar zu tun() Funktionalität. Stattdessen müssen Sie die Elemente in der Liste abzurufen, ihre Positionen verschieben und dann klar und setzen Sie die Listenelemente wieder in ihre neuen Auftrag:

// 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

Funktioniert wie ein Charme! :) –

+0

Funktioniert wirklich gut. Vielen Dank. –

Verwandte Themen