Начать жадные не запускается, когда элементы имеют разные родители, и этот элемент наложен. Как это:
<div id="one">
<div class="icone draggable"></div>
<div id="background" class="droppable">
<div id="grey" class="droppable"></div>
<div id="red" class="droppable"></div>
</div>
</div>
<div id="two">
<div id="yellow" class="droppable"></div>
</div>
Если я удалю сикрон из #red в #yellow (#yellow на #background), у меня есть два события (событие drop), например:
start
drop in background (<= Bad event)
drop in yellow
Но если я отменил сикрон от #yellow до #red, он работает, у меня есть только одно событие:
start
drop in red
#yellow не останавливает распространение событий, #red имеет правильную реакцию.
И если я перетаскиваю силикон в #yellow, у меня есть три события вместо одного (в моем коде orignal я могу установить положение силикона, когда я его перетаскиваю):
start
drop in background (<= Bad event)
drop in yellow (<= Bad event)
drag in yellow
См. Мой пример кода. Как остановить распространение событий в #yellow?
#red
и #yellow
могут быть #yellow
как этот второй примерный код.
Я попробовал различные решения, предлагаемые в stackoverflow с событием over/out, которые отключили другие события с возможностью изменения. Но если я использую эти решения, я не могу отказаться от.icone к #yellow.
Спасибо.
(См. Решение здесь: http://jsbin.com/mubenaze/21/edit)
Наверное, вы вынуждены работать исключительно на исключениях вроде #yellow. Это возможное решение, но может потребоваться некоторое исправление css (поскольку отключенные droppables получают непрозрачность: 0,35; но я не могу придумать никаких исправлений лучше, чем отключать фон при необходимости.
$( "#yellow" ).on( "dropout", function( event, ui ) {
$("#background").droppable('option', 'disabled', false);
} );
$( "#yellow" ).on( "dropover", function( event, ui ) {
$("#background").droppable('option', 'disabled', true);
} );
Эти параметры необходимо добавить для каждого div, который не находится в фоновом режиме.
REEDIT: добавьте это для повторного использования #background после удаления:
$( "#yellow" ).on( "drop", function( event, ui ) {
$("#background").droppable('option', 'disabled', false);
} );
red
наyellow
, у меня должно быть только одно событие (смотрите console.log).