Извикването на $(item).sortable('cancel') при Drop събитие на droppable деактивира sortable

Имам някакъв свързан списък с възможност за сортиране, който в същото време е място за изхвърляне. Проблемът е, че когато извикам cancel метода на sortable в събитието drop на droppable, sortable е повреден и няма да работи повече. Пример http://jsfiddle.net/zSnBA/10/ опитайте да преместите div номер 102 на втори списък: ще видите, че събитието за отмяна ще бъде извикано, но сортируемото няма да работи повече? Някаква помощ?


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


Отговори (1)


Бих препоръчал да не правите списъка с възможност за сортиране също и да може да се плъзга, а да слушате събитието receive на sortable, за да отмените събитието:

$('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