Ответ 1
Параметр 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"
, который заставил бы droppable принимать только элементы с классом acceptable
. Таким образом, еще один вариант - когда ваше пользовательское событие происходит, просто примените или удалите класс acceptable
по мере необходимости.
Вот пример: http://jsfiddle.net/andrewwhitaker/rUgJF/3/
В нижней части есть ссылка, которая переключает "приемлемость" на выкл.