Вызов $(item).sortable('cancel') в событии Drop для droppable отключает сортировку

У меня есть какой-то сортируемый связанный список, который в то же время является отбрасываемым. Проблема в том, что когда я вызываю метод отмены sortable в событии droppable, sortable ломается и больше не работает. Пример http://jsfiddle.net/zSnBA/10/ попытаться переместить элемент div номер 102 на второй список: вы увидите, что событие отмены будет вызвано, но сортировка больше не будет работать? Любая помощь?


person albanx    schedule 28.12.2011    source источник


Ответы (1)


Я бы рекомендовал не делать сортируемый список перетаскиваемым, а слушать событие receive на сортируемом, чтобы отменить событие:

$('div.products-list').sortable({
    connectWith: '.products-list',
    placeholder: 'ui-state-highlight',
    items: 'div.product',
    revert: 200,
    receive: function(event, ui) {
        var prod_id = ui.item.attr("prod_id");

        /* Equal to 1 is valid because an item was just added to the list: */
        if ($(this).find(".product[prod_id='" + prod_id + "']").length > 1) {
            ui.sender.sortable("cancel");
        }
    }
});

Пример: http://jsfiddle.net/z5X5y/

person Andrew Whitaker    schedule 28.12.2011
comment
Я пробовал это, но я не могу его использовать, потому что получение срабатывает только тогда, когда элемент перемещается из одного списка в другой. Мне нужно, чтобы он всегда срабатывал - person albanx; 29.12.2011
comment
@albanx: Значит, вам нужно, чтобы он срабатывал, когда элемент перемещается в списке, в котором он находится в данный момент? - person Andrew Whitaker; 29.12.2011