Событие Bubbling, и Stop Propagation - PullRequest
10 голосов
/ 18 октября 2011

В чем разница между event.bubbles до false для любого события и настройкой event.stopPropagation() или stopImmediatePropagation() при обработке события?

Я использую Flex4 с AS3.

Ответы [ 3 ]

32 голосов
/ 01 октября 2012

Информация, найденная в этой статье - Введение в обработку событий в ActionScript 3.0 является более наглядным и простым для понимания.Это улучшит принятый выше ответ @Jason Sturges.

Пузырьки событий и захват событий - это две стороны событий.Если для event.bubbles задано значение false, это означает, что событие помечено как не пузырьковое событие.

bubbles : указывает, является ли событие пузырьковым (и захватывает).Это не означает, что событие прошло или проходит фазу захвата или образования пузырьков, а скорее это своего рода событие, которое может.

На изображении ниже (из вышеприведенной статьи) показано, каксобытие проходит через процесс.

Event capturing and bubbling

Различие stopPropagation() и stopImmediatePropagation() будет более ясным на следующих изображениях.

StopPropagation:

stopPropagation

StopImmidiatePropagation:

stopImmediatePropagation

18 голосов
/ 18 октября 2011

Установка bubbles на false означает, что событие вообще не всплывает в списке отображения.

stopPropagation() и stopImmediatePropagation() делают прослушиватель текущего события последним для обработки события.

Разница между stopPropagation() и stopImmediatePropagation() заключается в том, что stopImmediatePropagation() не только предотвратит перемещение события на следующий узел, но также предотвратит захват других событий другими слушателями на этом узле.

3 голосов
/ 30 марта 2012

Посмотрите на пример:

object.addEventListener( MouseEvent.CLICK, functionOne );

object.addEventListener( MouseEvent.CLICK, functionTwo );

Если functionOne содержит event.stopPropagation(), также будет вызван functionTwo. Если он содержит event.stopImmediatePropagation(), functionTwo будет игнорироваться.

...