Как отменить действие удаления для JQuery Droppable? - PullRequest
16 голосов
/ 19 февраля 2011

У меня есть JQuery UI, поддерживающий перетаскивание. Я хочу запретить действие сброса при соблюдении определенных условий.

Как отменить действие удаления и выполнить действие, подобное возврату?

1 Ответ

29 голосов
/ 19 февраля 2011

Параметр accept в отображаемом виджете:

Все перетаскиваемые объекты, которые соответствуют селектору будут приняты. Если функция указано, функция будет вызвана для каждого перетаскиваемого на странице (пройдено в качестве первого аргумента функция), чтобы обеспечить пользовательский фильтр. Функция должна вернуть true, если Draggable должны быть приняты.

в сочетании с опцией revert на Draggable должно дать вам то, что вам нужно:

$(".draggable").draggable({
    revert: 'invalid'
});

$("#droppable").droppable({
    accept: function(el) {
        /* This is a filter function, you can perform logic here 
           depending on the element being filtered: */
        return el.hasClass('acceptable');
    }
});

Обратите внимание, что в этом конкретном примере вы могли бы также написать accept: ".acceptable", что позволило бы сбрасываемым элементам принимать только элементы с классом acceptable. Так что другой вариант - когда происходит ваше пользовательское событие, просто примените или удалите класс acceptable, если необходимо.

Вот пример: http://jsfiddle.net/andrewwhitaker/rUgJF/3/

В нижней части есть ссылка, которая включает или выключает "приемлемость".

...