Я вижу, что вы уже получили ответ; В любом случае, сегодня у меня была такая же проблема, и я решил ее следующим образом:
var outside = 0;
// this one control if the draggable is outside the droppable area
$('#droppable').droppable({
accept : '.draggable',
out : function(){
outside = 1;
},
over : function(){
outside = 0;
}
});
// this one control if the draggable is dropped
$('body').droppable({
accept : '.draggable',
drop : function(event, ui){
if(outside == 1){
alert('Dropped outside!');
}else{
alert('Dropped inside!');
}
}
});
Мне это было нужно, потому что я не мог изменить параметры моих перетаскиваемых объектов, поэтому мне приходилось работать только с дескрипторами (мне это нужно было в удивительном плагине FullCalendar ).
Я предполагаю, что у него могут быть некоторые проблемы с использованием «жадного» параметра droppables, но он должен работать в большинстве случаев.
PS: извините за мой плохой английский.
РЕДАКТИРОВАТЬ: Как и предполагалось, я создал версию, используя jQuery.data; его можно найти здесь: jsfiddle.net / Polmonite / WZma9 /
В любом случае документация jQuery.data гласит:
Обратите внимание, что этот метод в настоящее время не обеспечивает межплатформенную поддержку для настройки данных в документах XML, поскольку Internet Explorer не позволяет прикреплять данные через свойства expando.
(это означает, что он не работает в IE до 8)
РЕДАКТИРОВАТЬ 2: Как отмечает @Darin Peterson, предыдущий код не работает с более чем одной областью перетаскивания; это должно решить эту проблему: http://jsfiddle.net/Polmonite/XJCmM/
EDIT 3: В примере из EDIT 2 есть ошибка. Если я перетащу "Перетащите меня!" в нижнюю часть, затем перетащите «Перетащите меня тоже» в верхнюю часть и затем опустите «Перетащите меня тоже» снаружи, появится предупреждение «Упал внутри!» Так что не используйте его.
РЕДАКТИРОВАТЬ 4: Как отметил @Aleksey Gor, пример в Edit 2 был неверным; на самом деле, это был скорее пример, объясняющий, как перебрать все draggables / droppables, но я на самом деле забыл удалить предупреждающие сообщения, так что это было довольно странно. Здесь обновленная скрипка.