У меня есть перетаскиваемый div с интерактивным тегом внутри него:
<div id='myDiv'>
<a id='mylabel' onclick = "alert('i am clicked')">some text</a>
</div>
$("#myDiv").draggable({
stop: function(e){
//want to cancel the click event on the nested a element
//e.preventDefault(); ??
//e.cancelBubble(); ??
}
});
Когда я перестаю перетаскивать, срабатывает событие щелчка, чего я не хочу. Я пробовал предотвращение по умолчанию и отмену в событии остановки, но событие щелчка все еще срабатывает. Любые идеи?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я понял. Хитрость заключается в том, чтобы прикрепить событие клика к перетаскиваемому div следующим образом:
$("#myDiv").click(event.stopPropagation());
Поскольку перетаскивание div также вызывает событие щелчка, которое затем распространяется на дочерний тег, событие остановки перетаскивания — это не то, что нужно останавливать. Удаление распространения кликов — это путь.
Жаль, что я не видел структуру раньше. Обычно события идут снизу вверх, поэтому, если вы пытаетесь перетащить элемент
a, произойдет щелчок. Единственный способ заставить его работать - поместить event.preventDefault в щелчок, что так же хорошо, как не помещать прослушиватель кликов в этот элемент.