@Testtest132

Что значит передача результата работы одного обработчика другому?

На сайте И. Кантора всё предельно ясно описано о правильном добавлении обработчиков. Однако не совсем понятен пункт в дополнительных мини-фичах о передаче результата работы одного обработчика другому.
Неясно как можно передать через объект event что-то другому обработчику, если у него свой event.
Хотелось бы увидеть пример использования.

Ссылка: javascript.ru/tutorial/events/crossbrowser#peredac...
  • Вопрос задан
  • 2297 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
пример - модальное окно с бэкдропом (примечание, это просто пример. Обычно это делают через stopPropogation).

<div class="container">
    <button class="child">Close</button>
</div>


document.addEventListener('click', function (e) {
    if (e.doNotClose) {
          return false;
    }
    // закрываем модальное окно
}, true);

document.querySelector('container').addEventListener('click', function(e) {
    // просим обработчик кликов на документе не закрывать окно
    e.doNotClose = e.hasOwnProperty('doNotClose') ? e.doNotClose : true;
});

document.querySelector('button').addEventListener('click', function (e) {
    // просим обработчик кликов на контенере не мешать третьему обработчику закрывать окно
    e.doNotClose = false;
});


Основная соль - всплытие событий и то, что один и тот же объект передается во все обработчики. которые задействованы в обработке этого события.

В 99% случаев обычно все работают с preventDefault и stopPropogation. На и еще можно в таком случае использовать: у нас есть десяток ктопок, на каждом свой обработчик. Итоговое действие одно, отправить куда-то данные или что-то сделать, причем сами обработчики не знают что, их задача только данные подготовить. А обработчик контейнера, в котором эти кнопки, принимает данные и уже с ними что-то делает. События всплывают всегда вверх, обработчики так же вызываются в поредке вложенности элементов, на которые они навешаны.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы