Использование JQuery Sortable toArray с connectWith;как получить идентификаторы всех предметов? - PullRequest
1 голос
/ 02 июня 2011

Учитывая n списков m элементов, которые можно сортировать по спискам, как я могу получить общий список идентификаторов для всех элементов во всех списках сверху вниз (включая оба вида участники и не участники)?

Мой список предметов выглядит примерно так:

Category 1
- (id=a) Item 1A
- (id=b) Item 1B
Category 2
- (id=c) Item 2A
- (id=d) Item 2B
Category 3
- (id=e) Item 3A
- (id=f) Item 3B

Эти пункты Sortable для разных категорий и подключены через connectWith (см. Код ниже). Например, элемент 2B можно перетащить в категорию 1.

Я могу даже использовать update и toArray, чтобы получить идентификаторы для перетаскиваемого раздела и перетаскиваемого раздела, но есть ли чистый способ получить доступ ко всем из них? Нужно ли как-то его строить вручную? Как мне получить список всех идентификаторов в их текущем порядке сортировки?

Если я перетаскиваю элемент 2B, например, на первую позицию в категории 1, я могу получить два списка массивов для двух огней update, первый из которых содержит «d» (список, из которого я переместился), а второй содержащий "c, a, b" (список, в который я переместился). Как я могу получить список, содержащий «c, a, b, d, e, f»? Это происходит при нажатии кнопки, поэтому я не ограничен update, если есть лучший механизм для получения информации.

Вот демонстрация JFIDDLE того, что у меня есть.

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Еще один способ сделать это - просто перебрать все сортируемые дочерние элементы и записать их порядок.

$('.sortable').sortable({ 
    items: '> tr.child',
    connectWith: $('tbody'),
    receive: function(event, ui) {
        var myOrder = new Array();
        $(".sortable tr.child").each(function() {
            myOrder.push($(this).attr("id"));
        });
        console.log(myOrder.toString());  
    }
});

Это дает дополнительное преимущество, позволяя добавлять и удалять сортируемые контейнеры в любое время - этоскрипт будет работать независимо.

2 голосов
/ 02 июня 2011

Кажется, что нет встроенной функции для этого, поэтому я создал демонстрационную версию , которая выполняет итерацию всех элементов .sortable для создания одного массива и регистрации вконсоль в Chrome или Firefox с Firebug.Я также изменил update на receive, чтобы он срабатывал только один раз (см. сортируемая документация jQueryUI ).

...