Справочник API
event.isDefaultPrevented() в jQuery
Содержание статьи
-
Категории: Events › Event Object
Позволяет определить, был ли вызван метод event.preventDefault(), отменяющий семантическое действие по умолчанию для данного события.
Синтаксис и описание:
Добавлено в jQuery 1.3event.isDefaultPrevented()
Метод event.isDefaultPrevented() сообщает, вызывался ли для данного объекта события метод event.preventDefault(). Пока обработчик не отменил действие по умолчанию, метод возвращает
false; после вызоваpreventDefault()—true.Полезен, когда несколько обработчиков висят на одном событии и последующему нужно узнать, не отменил ли уже кто-то действие по умолчанию (например, переход по ссылке или отправку формы), чтобы не выполнять повторно ту же проверку или не дублировать сообщение об отмене.
Метод особенно удобен в делегированных обработчиках: элемент, на котором событие обрабатывается позже (при всплытии), может узнать через isDefaultPrevented(), что действие уже отменено вложенным обработчиком, и не выполнять свою логику заново.
Возвращаемое значение: (логическое) true или false.
Примечание:
Метод не отменяет действие сам по себе — он только показывает, было ли оно уже отменено. Чтобы отменить действие, вызывайте event.preventDefault().
В jQuery 3.x и 4.0:
Метод работает без изменений. Нативный аналог — свойство (не метод!)
event.defaultPrevented, доступное в обычных обработчиках, повешенных черезaddEventListener.
Примеры:
Проверяем состояние до и после вызова
preventDefault():$( "a" ).on( "click", function ( event ) { console.log( event.isDefaultPrevented() ); // false event.preventDefault(); console.log( event.isDefaultPrevented() ); // true } );Второй обработчик того же события узнаёт, что первый уже отменил переход по ссылке:
$( "a.confirm-link" ).on( "click", function ( event ) { if ( !confirm( "Уверены?" ) ) { event.preventDefault(); } } ); $( "a.confirm-link" ).on( "click", function ( event ) { if ( event.isDefaultPrevented() ) { console.log( "Переход отменён предыдущим обработчиком" ); } } );