Справочник API
event.isPropagationStopped() в jQuery
Содержание статьи
-
Категории: Events › Event Object
Позволяет определить, был ли вызван метод event.stopPropagation(), предотвращающий всплытие объекта события.
Синтаксис и описание:
Добавлено в jQuery 1.3event.isPropagationStopped()
Метод event.isPropagationStopped() сообщает, вызывался ли для текущего объекта события метод event.stopPropagation(). До вызова возвращает
false, после —true.Полезен в делегированных обработчиках и плагинах, когда нужно узнать, не остановил ли уже кто-то всплытие события, прежде чем принимать решение самому.
Возвращаемое значение: (логическое) true или false.
Примечание:
Отличие от event.isImmediatePropagationStopped(): этот метод проверяет только факт остановки всплытия (
stopPropagation()), а не остановку остальных обработчиков на том же элементе (stopImmediatePropagation()дополнительно взводит и этот флаг тоже, так как она включает в себя остановку всплытия).В jQuery 3.x и 4.0:
Метод работает без изменений. Нативного аналога с точным поведением нет; ближе всего свойство
event.cancelBubble, но оно устарело и его использовать не стоит — в обычном коде на чистом JS факт остановки всплытия никак не проверяется, за это отвечает сам вызывающий код.
Примеры:
Проверка состояния до и после вызова
stopPropagation():$( "button" ).on( "click", function ( event ) { console.log( event.isPropagationStopped() ); // false event.stopPropagation(); console.log( event.isPropagationStopped() ); // true } );Делегированный обработчик учитывает, что вложенный обработчик уже остановил всплытие:
$( "#list" ).on( "click", "li", function ( event ) { if ( event.isPropagationStopped() ) { return; } console.log( "Клик по пункту списка" ); } ); $( "#list .close" ).on( "click", function ( event ) { event.stopPropagation(); } );