Справочник API

event.isDefaultPrevented() в jQuery

Содержание статьи
  • Категории: Events › Event Object

    Позволяет определить, был ли вызван метод event.preventDefault(), отменяющий семантическое действие по умолчанию для данного события.

Синтаксис и описание:

  • Добавлено в jQuery 1.3event.isDefaultPrevented()

  • Метод event.isDefaultPrevented() сообщает, вызывался ли для данного объекта события метод event.preventDefault(). Пока обработчик не отменил действие по умолчанию, метод возвращает false; после вызова preventDefault() — true.

  • Полезен, когда несколько обработчиков висят на одном событии и последующему нужно узнать, не отменил ли уже кто-то действие по умолчанию (например, переход по ссылке или отправку формы), чтобы не выполнять повторно ту же проверку или не дублировать сообщение об отмене.

  • Метод особенно удобен в делегированных обработчиках: элемент, на котором событие обрабатывается позже (при всплытии), может узнать через isDefaultPrevented(), что действие уже отменено вложенным обработчиком, и не выполнять свою логику заново.

Возвращаемое значение: (логическое) true или false.

  1. Примечание:

    Метод не отменяет действие сам по себе — он только показывает, было ли оно уже отменено. Чтобы отменить действие, вызывайте event.preventDefault().

  2. В jQuery 3.x и 4.0:

    Метод работает без изменений. Нативный аналог — свойство (не метод!) event.defaultPrevented, доступное в обычных обработчиках, повешенных через addEventListener.

Примеры:

  1. Проверяем состояние до и после вызова preventDefault():

    $( "a" ).on( "click", function ( event ) {
      console.log( event.isDefaultPrevented() ); // false
      event.preventDefault();
      console.log( event.isDefaultPrevented() ); // true
    } );
  2. Второй обработчик того же события узнаёт, что первый уже отменил переход по ссылке:

    $( "a.confirm-link" ).on( "click", function ( event ) {
      if ( !confirm( "Уверены?" ) ) {
        event.preventDefault();
      }
    } );
    
    $( "a.confirm-link" ).on( "click", function ( event ) {
      if ( event.isDefaultPrevented() ) {
        console.log( "Переход отменён предыдущим обработчиком" );
      }
    } );

[ наверх ]

Вопросы и ответы

Для чего используется event.isDefaultPrevented() в jQuery?

Позволяет определить, был ли вызван метод event.preventDefault(), отменяющий семантическое действие по умолчанию для данного события.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →