Как я могу остановить распространение событий с другим родителем?

0

Начать жадные не запускается, когда элементы имеют разные родители, и этот элемент наложен. Как это:

<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)

  • 0
    так что, если я перетащу зеленый квадрат с желтого на синий фон, он не должен принять это?
  • 0
    он должен принять это, но если я опускаю зеленый квадрат с red на yellow , у меня должно быть только одно событие (смотрите console.log).
Показать ещё 7 комментариев
Теги:
jquery-ui-droppable

1 ответ

2
Лучший ответ

Наверное, вы вынуждены работать исключительно на исключениях вроде #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);
} );

http://jsbin.com/mubenaze/18/

  • 0
    Я хочу сохранить свой HTML-код таким образом, я не могу изменить HTML-код.
  • 0
    о, это не проблема отсутствия доступа к html-файлу. Вы не можете изменить это вообще, я вижу.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню