Вы можете попробовать jquery-collision plus jquery-ui-draggable-collision . Полное раскрытие: я только что написал и выпустил их на sourceforge.
Первый позволяет это:
var hit_list = $("#collider").collision(".obstacle");
это список всех ".obstacle", которые перекрывают "#collider".
Второй позволяет:
$("#collider").draggable( { obstacle: ".obstacle" } );
Что дает (помимо прочего) событие "столкновения" для привязки к:
$("#collider").bind( "collision", function(event,ui){...} );
И вы даже можете установить:
$("#collider").draggable( { obstacle: ".obstacle", preventCollision: true } );
, чтобы "#collider" не перекрывал любой ".obstacle" при перетаскивании.