2014-12-09 1 views
2

Для демонстрации я создал эту скрипку: http://jsfiddle.net/Lxmr1n4p/4/jQueryUI тащили пункт пожары падения для каждого элемента, который стоит за первые сбрасываемые

В вебе-играх У меня есть несколько слоев, которые расположены абсолютные и слоистые друг над другим. В этих слоях присутствуют элементы с возможностью замены.

В скрипке я сделал черный div как перетаскиваемый элемент. Если я опустил его на цель крупной мидгри, он правильно оповещает о том, что он упал на уровень 2.

Но если я опустил его на темно-сером фоне, он сказал, что упал на слой 2, и когда я нажму, также предупреждает, что он упал на уровень 1, чего я не хочу, поскольку (помимо того, что он лежит за элементом в слое 2), элемент в слое 1 не имеет ничего общего с этим действием, над ним находится полный слой.

Это расположение:

<div class="layer1"> 
    <div class="r"> 
     <div class="item"></div> 
    </div>  
</div> 
<div class="layer2"> 
    <div class="r"> 
     <div class="item"></div> 
    </div> 
</div> 

<div class="drag"></div> 

div.r просто делает относительную коробку. там

$(document).ready(function() { 
    $('.layer1 .item').droppable({ 
     drop: function() { 
      greedy: true, 
      alert('dropped on item in layer 1'); 
     } 
    }); 

    $('.layer2 .item').droppable({ 
     drop: function() { 
      greedy: true, 
      alert('dropped on item in layer 2'); 
     } 
    }); 

    $('.drag').draggable({}); 
}); 

ли способ сказать jqueryui, что я хочу только самый верхний пункт, чтобы вызвать событие падение:

И это мой JavaScript? Этот пример - не настоящий игровой код, так как это путь к большому.

+1

взглянуть [здесь] (https://forum.jquery.com/topic/two- перекрещивающиеся droppables-это капля-на-под-Droppable). Я боюсь, что эта проблема никогда не будет исправлена ​​в ядре jQueryUI, так как это известная ошибка со статусом «не исправит». – empiric

ответ

0

Привет вы можете отключить другой Выбрасывается элемент (ы) при наведении курсора мыши:

over: function(event, ui){ 
     $(".layer1 .item").droppable("disable") 
}, 
out: function(event, ui){ 
    $(".layer1 .item").droppable("enable") 
} 

http://jsfiddle.net/Lxmr1n4p/5/

+0

Это не вариант, потому что у меня сотни динамически сгенерированных элементов. –

+0

Нет возможности дать им все одинаковые классы и отключить их сразу (кроме того, что, конечно, зависает)? – Jeroen

+0

Итак, 'over' запускается только на самом верхнем отбрасываемом? –

Смежные вопросы