⊗jsPmOEBUs 428 of 505 menu

Aplicación de la detención de propagación de eventos en JavaScript

Supongamos que dentro de un mismo padre tenemos un botón y un bloque determinado:

<div id="parent"> <button>click me</button> <div id="block"> text </div> </div>

Obtengamos referencias a nuestros elementos en variables:

let parent = document.querySelector('#parent'); let button = document.querySelector('button'); let block = document.querySelector('#block');

Supongamos que nuestro bloque está inicialmente oculto:

#block:not(.active) { display: none; }

Hagamos que al hacer clic en el botón nuestro bloque se muestre:

button.addEventListener('click', function() { block.classList.add('active'); });

Y ahora hagamos que al hacer clic en cualquier lugar del padre nuestro bloque se oculte:

parent.addEventListener('click', function() { block.classList.remove('active'); });

Sin embargo, nos espera una sorpresa inesperada: ya que el botón está dentro del padre, hacer clic en el botón también significa hacer clic en el padre. Esto significa que primero nuestro bloque se mostrará, y luego, debido a la propagación del evento, se activará el controlador en el padre y nuestro bloque se ocultará.

Aquí es donde nos será útil la posibilidad de cancelar la propagación: podemos hacer que al hacer clic en el botón se cancele la propagación, y el padre no reaccione a este clic.

Implemente de forma independiente el funcionamiento correcto de la tarea descrita.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar