⊗jsPmOEEB 423 of 505 menu

Propagação de Eventos em JavaScript

Imagine que você tem vários blocos aninhados uns dentro dos outros:

<div id="elem1"> <div id="elem2"> <div id="elem3"></div> </div> </div>

Vamos obter referências para nossas divs em variáveis:

let elem1 = document.querySelector('#elem1'); let elem2 = document.querySelector('#elem2'); let elem3 = document.querySelector('#elem3');

E agora vamos adicionar manipuladores de clique a eles:

elem1.addEventListener('click', function() { alert('verde'); }); elem2.addEventListener('click', function() { alert('azul'); }); elem3.addEventListener('click', function() { alert('vermelho'); });

Vamos exibir nossos blocos na tela, adicionando um pouco de CSS:

Agora clique no bloco vermelho mais interno - e você verá que o evento primeiro será acionado no bloco vermelho, depois no azul, e depois no verde. E isso é lógico, porque ao clicar no bloco interno, você está simultaneamente clicando em todos os blocos externos.

Ou seja, acontece que quando você clica no bloco mais interno, o evento de clique surge primeiro nele, depois é acionado em seu elemento pai, no pai do seu pai e assim por diante, até chegar ao topo.

Este comportamento é chamado de propagação (bubbling) de eventos - por analogia com uma bolha de ar subindo do fundo. Da mesma forma que uma bolha, nosso evento sobe para o topo, sendo acionado a cada vez em elementos mais acima na hierarquia.

Escreva um código por conta própria que demonstre a propagação de eventos. Teste nela a propagação de vários tipos de eventos.

Nem todos os eventos se propagam. Experimentalmente, encontre pelo menos um evento que não se propaga.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar