Как мне остановить событие mousedown от внешнего элемента?

0

Я применил директиву Angular draggable, как указано угловым, https://docs.angularjs.org/guide/directive. Он в основном просто помещает прослушиватель событий в событие mousedown и перемещает позицию до события mouseup.

<div class="draggable">
  <input type="text"></input>
</div>

Проблема возникает, когда вы пытаетесь выделить текст на входе. div захватывает событие и думает, что mousedown сигнализирует действие перетаскивания вместо выделения текста на входе.

Как остановить событие mousedown при запуске события div mousedown, когда пользователи отображаются в элементах ввода?

  • 1
    Вы пытались остановить распространение события? что-то вроде этого события.stopPropagation ();
  • 0
    event.stopPropagation () - вот что нужно - спасибо

1 ответ

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

Похоже, что вы ищете event.stopPropogation

https://api.jquery.com/event.stoppropagation/

Предотвращает событие из пузырьков дерева DOM, предотвращая уведомление родительских обработчиков о событии.

Я вижу, что вы упомянули Углового. Вы могли бы попробовать что-то вроде этого.

.directive('myDirective', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attr) {
            element.bind(mouseover, function (event) {
                event.stopPropagation();
            });
        };
     });
  • 0
    Мой ввод (внутренний элемент html) не является директивой, поэтому я не могу остановить распространение, как продемонстрировано. Тем не менее, я мог бы захватить событие, включив ng-mousedown = "stopEvent ($ event)" в элемент input. Затем в моем контроллере вызывается функция stopEvent (event) и запускается event.stopPropagation (), и это решает мою проблему - спасибо. Все ли браузеры обрабатывают события одинаково? Будет ли входной mousedown всегда вызываться перед div mousedown?

Ещё вопросы

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