Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

122
Visualizações
¿Cómo capturar eventos personalizados de un hermano en JS? ¿Es posible?

Entiendo la idea detrás de la captura y burbujeo de eventos en Js. El evento se pasa a los padres del Elemento de envío o se pasa a la otra dirección: los elementos secundarios del Elemento de envío.

Desafortunadamente, no logré que el hermano recibiera el evento personalizado enviado por el elemento.

Digamos que tengo la siguiente estructura DOM:

 <div class="container"> <div class="receiver"></div> <div class="generator"> <button>Click to generate custom Event</button> </div> </div>

Cuando se hace clic en el botón, debería generar un evento personalizado. Y el div con la clase "receptor" debería recibir el evento.

 let button = document.querySelector("button"); let receiver = document.querySelector(".receiver"); receiver.addEventListener("my-customevent",(e)=>{ console.log(e.detail); }); button.addEventListener("click",(e)=> { let customEvent = new CustomEvent("my-customevent",{ detail: "some content", bubbles: true, cancelable: true, composed: false }); button.dispatchEvent(customEvent); });

Lamentablemente no se recibe el evento. ¿Es incluso posible recibir eventos de hermanos? Si es así, ¿cómo lo haría? Para simplificar, utilicé divs y clases en mi Ejemplo. De hecho, uso elementos personalizados en su lugar. Supongo que eso no hace ningún cambio, el concepto debería ser el mismo...

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

¿Es incluso posible recibir eventos de hermanos?

No, no lo es.

Pero, si lo sabe, puede indicar la relación del receptor con e.target , así:

 let receiver = e.target.parentNode.previousElementSibling; receiver.dispatchEvent(customEvent);

Ejemplo de trabajo (simplificado, con un click en lugar de un evento personalizado):

 const myButton = document.querySelector('.generator button'); const modifyReceiver = (e) => { let receiver = e.target.parentNode.previousElementSibling; receiver.style.setProperty('color', 'rgb(255, 255, 255)'); receiver.style.setProperty('background-color', 'rgb(255, 0, 0)'); receiver.style.setProperty('font-weight', 'bold'); } myButton.addEventListener('click', modifyReceiver, true);
 div { padding: 12px; border: 1px solid rgb(191, 191, 191); } .receiver { font-size: 12px; font-family: sans-serif; text-transform: uppercase; }
 <div class="container"> <div class="receiver">Receiver</div> <div class="generator"> <button>Click to generate custom Event</button> </div> </div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda