В чем разница между event.stopPropagation и event.preventDefault?
Кажется, что они делают одно и то же...
Одна из них современная, а другая старая? Или они поддерживаются разными браузерами?
Когда я обрабатываю события самостоятельно (без фреймворков), я всегда проверяю оба варианта и выполняю оба, если они присутствуют. (Я также использую return false
, но у меня есть ощущение, что это не работает с событиями, подключенными с помощью node.addEventListener
).
Так зачем оба варианта? Мне продолжать проверять оба? Или между ними действительно есть разница?
(Знаю, много вопросов, но они все как бы связаны между собой =))
2 ответ(ов)
event.preventDefault();
предотвращает выполнение стандартного действия элемента.
event.stopPropagation();
предотвращает всплытие события по дереву DOM, что означает, что родительские обработчики событий не будут уведомлены о данном событии.
Например, если у вас есть ссылка с обработчиком клика внутри DIV
или FORM
, в которых также есть свой обработчик клика, то использование event.stopPropagation();
предотвратит вызов обработчика клика у DIV
или FORM
.
Давайте сравним preventDefault
и stopPropagation
.
Все эти методы могут использоваться в обработчиках событий.
event.preventDefault()
предотвращает стандартное поведение браузера для данного элемента. Например, для элементаform
это предотвращает отправку формы, а для элементаhref
– переход по ссылке.
event.stopPropagation()
останавливает событие от всплытия или распространения по дереву DOM.
Что касается
return false
, то это комбинация какpreventDefault()
, так иstopPropagation()
.
Таким образом, если вы хотите остановить стандартное поведение элемента и предотвратить всплытие события, вы можете просто вернуть false
в обработчике события.
Где найти документацию по форматированию даты в JavaScript?
В чем разница между String.slice и String.substring?
Проверка соответствия строки регулярному выражению в JS
Существует ли ссылка на "последнюю" библиотеку jQuery в Google APIs?
Как создать диалог с кнопками "Ок" и "Отмена"