Параметр 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/
В нижней части есть ссылка, которая включает или выключает "приемлемость".