С опцией возврата, предоставляемой jquery draggable, вы можете изменить положение на недопустимых падениях и перекрытиях.
Я изменил ответ, данный Китом. Абрамо.
Пожалуйста, вам не нужно использовать смещение, а не положение, так как во время перекрытия положение портится.
http://jsfiddle.net/J7azG/177/
Используется опция возврата
ui.draggable.draggable('option','revert',true);
ui.draggable.draggable('option','revert',false);
Другим решением было бы сделать перетаскиваемый объект плавающим и использовать для него опцию 'недействительный'.
http://jsfiddle.net/htWV3/1219/
HTML
<div class="drop">
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
</div>
JS
$('.drop').droppable({
tolerance: 'fit'
});
$('.drag').draggable({
revert: 'invalid',
stop: function(){
$(this).draggable('option','revert','invalid');
}
});
$('.drag').droppable({
greedy: true,
drop: function(event,ui){
ui.draggable.draggable('option','revert',true);
}
});
Отказ от ответственности: я не уверен, кто автор скрипки.