⊗jsPmOEBTE 424 of 505 menu

Obtención del elemento objetivo durante la propagación de eventos

Supongamos que tenemos dos elementos: div y un párrafo p, ubicado dentro de este div:

<div> <p></p> </div>

Obtengamos una referencia a nuestro div en una variable:

let div = document.querySelector('div');

Agreguemos algunos estilos a nuestras etiquetas:

div { padding: 20px; border: 1px solid red; } p { width: 200px; height: 200px; border: 1px solid green; }

Ahora, supongamos que hay un manejador de clics asignado al div:

div.addEventListener('click', function() { console.log('click'); });

Debido a que nuestro div tiene padding, cuando hacemos clic en el div, podemos hacer clic en el párrafo, o podemos hacer clic en un lugar donde no está el párrafo, es decir, directamente en el div.

En este caso, en el manejador de clics this siempre apuntará al elemento al que está asignado el manejador. En nuestro caso este es nuestro div:

div.addEventListener('click', function() { console.log(this); // el div });

Sin embargo, podemos obtener exactamente la etiqueta donde ocurrió el evento. Para esto podemos ver qué hay en event.target:

div.addEventListener('click', function(event) { console.log(event.target); // o el div, o el párrafo });

Podemos distinguir estas dos opciones usando condiciones:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('clic exactamente en el div'); } if (event.target.tagName === 'P') { console.log('clic exactamente en el párrafo'); } });

En lugar de tagName se puede usar matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('clic exactamente en el div'); } if (event.target.matches('p')) { console.log('clic exactamente en el párrafo'); } });

Se dan los siguientes elementos:

<div> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </div> div, ul, li { padding: 20px; } div { border: 1px solid red; } ul { border: 1px solid orange; } li { border: 1px solid green; }

Asigne al div un manejador de clics. En este manejador, determine en cuál de las etiquetas se activó el evento.

Modifique la tarea anterior. Haga que al hacer clic en li, se le agregue al final un signo de exclamación, y al hacer clic en ul se muestre información sobre esto en la consola.

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