Выбор ответа Junior События спрашивают часто обновлено

preventDefault не останавливает всплытие

Вопрос

Ссылка лежит внутри div со своим обработчиком клика. В обработчике ссылки вызван только event.preventDefault(). Что произойдёт при клике?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

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

Варианты ответа

  1. Перехода не будет, обработчик div тоже не сработает
  2. Переход произойдёт, обработчик div не сработает
  3. Переход произойдёт и обработчик div сработает
  4. Перехода не будет, а обработчик div сработаетправильный ответ

Разбор

preventDefault отменяет только действие браузера по умолчанию, здесь переход по ссылке. Распространение события он не трогает, поэтому событие всплывёт и сработает обработчик div. Остановить всплытие может только stopPropagation. Остальные варианты смешивают два независимых механизма.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме