Пожалуйста, порекомендуйте плагин JQuery, который обрабатывает обнаружение столкновений для перетаскиваемых элементов.
Мы используем плагин Draggable JQuery UI и должны запретить перекрытие между нашими элементами. Мы могли бы написать некоторое обнаружение столкновений самостоятельно, но предпочли бы использовать проверенный пакет. Какие-либо предложения?
5 ответов
Вы можете попробовать jquery-collision плюс 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" при перетаскивании.
Появляется быстрый поиск плагинов jQuery:
Похоже, еще рано, но, возможно, стоит проверить.
Я знаю, что этот вопрос довольно старый, но, может быть, вы найдете его полезным: наш плагин Collision Check для jQuery.
Описание на немецком языке, но оно должно быть самоочевидным. Вы можете использовать два отдельных элемента или даже наборы элементов и получить обратно набор всех сталкивающихся элементов.
Google сообщает мне, что плагин JQuery gameQuery имеет функцию "столкновения":
Найдите слово "столкновение" на странице выше.
Этот поиск Google может дать вам несколько других вариантов:
Предположим, но я думаю, что вам нужно будет найти здесь:
Он использует известный jQuery $.event.special.drag для создания события удаления. Вы можете поместить свой собственный код JavaScript под .bind( "drop", function( event ){
элемент this внутри этой функции представляет объект с классом "drop", который вы определили, а event.dragTarget - объект, который перетаскивается.
Больше документов на сайте, указанном выше. Это было то, что мне было нужно в любом случае.