Подтвердить что ты не робот

JQuery Сортировка, удаление текущего элемента путем перетаскивания

Моя проблема: Сортировка события: срабатывает, когда я перетаскиваю что-то в списке или сортирую список. Но я хочу только запустить функцию, когда я перетаскиваю элемент.

Мой код

        $(document).ready(function ust()
        {    
            $('#div1').sortable({
                out: function(event, ui) { $('#nfo').append('OUT<br />'); }
            });

        });

Рабочий пример http://jsfiddle.net/FrbW8/22/

4b9b3361

Ответ 1

Это поведение по умолчанию для обратного вызова. См. Этот jquery ui trac ticket

Я действительно не согласен с понятием "логического" поведения.

"Однако обратите внимание, что обратный вызов" out "все равно будет запущен, если вы перетащите в список, а затем отпустите мышь (но не в том случае, если вы не превысили список). Это логичное поведение и происходит для обычных сортировок."

Ответ 2

Используйте beforeStop для перехвата элемента и его удаления:

receive: function(e, ui) { sortableIn = 1; },
over: function(e, ui) { sortableIn = 1; },
out: function(e, ui) { sortableIn = 0; },
beforeStop: function(e, ui) {
   if (sortableIn == 0) { 
      ui.item.remove(); 
   } 
}

(Я изначально нашел это в Google, но больше не могу найти ссылку. Поэтому я извиняюсь за то, что не ссылаюсь на источник.)

Ответ 3

Другие решения, похоже, не работают со связанными сортируемыми списками, поэтому я отправляю собственное решение, которое отлично работает для моего случая. Это использует плагин "droppable", который захватывает событие "drop", когда элементы удаляются вне сортируемых списков.

$('#div1').sortable({
    ....
}).droppable({greedy: true})

$('body').droppable({
    drop: function ( event, ui ) {          
        ui.draggable.remove();
    }
});

Вот jsfiddle этого подхода в действии: http://jsfiddle.net/n3pjL/

Ответ 4

Я использую this.element.find('.ui-sortable-helper').length, чтобы различать "sort out event" и "drop out event". Когда вы сортируете, отсортированный элемент имеет класс ui-sortable-helper. После этого нет другого класса ui-sortable, пока вы не начнете сортировку снова (по крайней мере, в моем script). Надеюсь помочь кому-то.