В JavaScript действия по умолчанию у элементов браузера включают
поведение, которое происходит при стандартном взаимодействии
пользователя с элементами страницы: переход по ссылке, отправка формы,
выделение текста и другие события. В Dom7 управление такими действиями
реализуется через метод preventDefault, встроенный в
обработчики событий.
Dom7 использует привычный метод .on() для добавления
обработчиков событий. Для предотвращения действия по умолчанию внутри
обработчика используется объект события event и его метод
preventDefault():
import $ from 'dom7';
$('a').on('click', function (event) {
event.preventDefault();
console.log('Событие клика обработано, переход по ссылке предотвращен');
});
В этом примере для всех ссылок <a> на странице
клики перехватываются, и стандартное поведение браузера — переход по
адресу в href — блокируется.
Особенно важным является предотвращение отправки форм при реализации кастомной валидации или обработки данных через AJAX:
$('#myForm').on('submit', function (event) {
event.preventDefault();
const formData = $(this).serializeArray();
console.log('Форма не отправляется, данные:', formData);
});
Метод serializeArray() в Dom7 позволяет получить
структуру данных формы для дальнейшей обработки без перезагрузки
страницы.
Dom7 поддерживает делегирование событий, что позволяет предотвращать действия по умолчанию для динамически создаваемых элементов:
$(document).on('click', '.dynamic-link', function (event) {
event.preventDefault();
console.log('Клик по динамически добавленной ссылке обработан');
});
Делегирование особенно полезно при работе с элементами, добавленными в DOM после загрузки страницы.
Метод preventDefault() можно комбинировать с
stopPropagation(), если нужно не только блокировать
стандартное действие, но и остановить всплытие события по DOM:
$('button').on('click', function (event) {
event.preventDefault();
event.stopPropagation();
console.log('Клик обработан, всплытие остановлено');
});
Такой подход часто используется для управления сложными компонентами интерфейса, где вложенные элементы могут иметь собственные обработчики.
Dom7 активно применяется в мобильных интерфейсах, где часто нужно предотвращать стандартное поведение touch-событий (например, скролл страницы при свайпе):
$('.slider').on('touchmove', function (event) {
event.preventDefault();
});
Это позволяет реализовать собственную логику перетаскивания или жестов без вмешательства стандартного скролла.
Dom7 предоставляет возможность передавать объект события в стрелочную функцию, что особенно удобно при работе с несколькими действиями:
$('.link, .button').on('click', (event) => {
event.preventDefault();
console.log('Действие по умолчанию отменено для нескольких элементов');
});
Таким образом, предотвращение действия по умолчанию становится максимально удобным и универсальным, при этом код остается компактным и читабельным.
preventDefault() вызывается
на объекте события. В Dom7 это гарантируется при использовании
.on().stopPropagation() только там, где нужно
полностью контролировать поток событий.preventDefault(), чтобы избежать конфликтов с другими
скриптами.Эти методы позволяют реализовать тонкую настройку поведения элементов без вмешательства в их базовую функциональность, обеспечивая гибкость интерфейса и точный контроль событий.