Это кажется очень простой проблемой, но я не могу найти правильный способ ее решения. Как бы я мог иметь один мастер-класс, который отключает все события щелчка для этого элемента. Допустим, я ...

1
Vizious Developer 5 Апр 2021 в 23:17

1 ответ

Лучший ответ

Одна из больших проблем заключается в том, что jQuery присоединяется и прослушивает только события всплытия . Если вы прикрепите прослушиватель к документу, он будет запускаться только после срабатывания всех промежуточных слушателей (между выбранным элементом и документом).

Вместо этого я бы использовал ванильный JS, чтобы вы могли прикрепить слушателя на этапе захвата до того, как событие перейдет в цель. Тогда stopPropagation в первую очередь предотвратит достижение цели событием.

document.addEventListener(
  'click',
  (e) => {
    if (e.target.closest('.btn-disabled')) {
      e.stopPropagation();
    }
  },
  true // attach in capturing phase
);

Если вы сделаете это, вы можете добавить слушателей по своему усмотрению к любым кнопкам (или даже к документу) с помощью jQuery - и к любым нажатым кнопкам, которые имеют класс btn-disabled (или элемент-предок с btn-disabled) не будут активированы обработчики кликов, независимо от того, прикреплен ли слушатель к кнопке или к родительскому элементу.

1
CertainPerformance 5 Апр 2021 в 20:23