JQuery перетаскиваемый - без перекрытия - PullRequest
7 голосов
/ 14 августа 2010

можно ли сказать "перетаскиваемый div -> без перекрытия"?

Я думаю, что главной проблемой является позиция: абсолютная; ... верно?

добрые пожелания Питер

Ответы [ 2 ]

15 голосов
/ 19 мая 2011

Вы можете попробовать 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" при перетаскивании.

5 голосов
/ 14 августа 2010

В jQuery UI, перетаскиваемом , нет встроенной функции для обнаружения столкновений, если только вы на самом деле не хотите что-то вроде сортировки.Самое близкое, что встроено в то, что вам нужно, это plceholder сортировки, , который выглядит так: .

Короткая версия - обнаружение столкновений с каждым перетаскиваемым элементом - не тривиально с точки зрения производительности(в зависимости от количества элементов), поэтому он не входит в библиотеку, так как это очень редкий запрос.Однако вы можете самостоятельно рассчитать столкновения внутри события drag draggable *1008* , если вам действительно нужно обнаружение столкновений.

...