jQuery.sortable. изменить порядок с помощью JavaScript - PullRequest
10 голосов
/ 15 января 2010

Как изменить порядок списка, примененного в JavaScript jQuery.sortable.

Например:

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

Затем, предполагая, что это работает:

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

Ответы [ 3 ]

16 голосов
/ 15 января 2010

Как уже упоминалось, это не имеет ничего общего с функцией sortable (). Вместо этого вам нужно получить элементы в списке, сместить их позиции, а затем очистить и снова вставить элементы списка в их новом порядке:

// 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);
11 голосов
/ 15 января 2010

Как сказал Спарр, невозможно отсортировать их, используя sortable напрямую, но вы все равно можете переместить их вручную, например:

$("#mylist li:eq(1)").insertAfter($("#mylist li:eq(2)"));
1 голос
/ 15 января 2010

Сортируемый предоставляет пользовательский интерфейс для перестановки элементов. Чтобы переставить их программно, вам все равно нужно манипулировать элементами самостоятельно, вручную или с помощью другого плагина.

...