Как управлять всплытием drag & drop событий в html5?

Похожий вопрос без решения: toster.ru/q/14633

Пример:
html (в вакууме)
<div drop_area>
    <div draggable>
         <div draggable_too></div>
    </div>
</div>

Т.е. у 2-х элементов одна область «посадки», но должны быть разные действия при драггинге внутреннего и внешнего элемента. При этом если тащить за внутренний — событие всплывает до внешнего и уже отрабатывает он.
  • Вопрос задан
  • 3173 просмотра
Решения вопроса 1
phil_b
@phil_b Автор вопроса
Вопрос закрыт, т.к. проблема имела место быть частично из-за моей невнимательности.
Решение:
У каждого, пусть и вложенного drag элемента должны быть прописаны draggable="true"
Используете запись вида
$("[draggable]").on("dragstart", "[draggable_too]", function(e){
     e.stopPropagation();
     e.dataTransfer.setData("type_control", literal_string);
});

При этом присваиваете разные идентификаторы для draggable и draggable_too и при обработке события drop в зависимости от идентификатора выполняете нужные действия.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Мне кажется, может помочь делегирование событий. Вешайте событие на самый корневой элемент (в примере - drop_area), слушайте все, что до него доплывает, и применяйте разные обработчики для разных event.target
Подробнее о делегировании событий в JS
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы