Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

108
Views
No se puede agregar un evento de clic al botón que no se crea hasta que se crea el objeto

Estoy tratando de seleccionar la clase de elemento 'eliminar libro' que no se crea hasta que se ejecutan los libros de visualización... ¿cómo hago para seleccionar este botón de eliminación DESPUÉS de que se haya creado? Aquí hay un enlace a github https://github.com/Cluelessshint/library , la función 'displayBooks ()' es lo que crea esa clase ... ¡ayuda por favor!

 buttons.forEach((button) => { if (button.className === 'new-book') { button.addEventListener('click', function () { const input = document.querySelector('.book-input'); openInput(input); }); } else if (button.className === 'add-input') { button.addEventListener('click', addABook); } else if (button.className === 'remove-book') { button.addEventListener('click', doThis); } console.table(buttons); });
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Intente utilizar la delegación de eventos. La idea es simple: en lugar de escuchar eventos en el elemento de destino, escuchar eventos en sus elementos antepasados. Si está ocurriendo un evento, el navegador funciona de la siguiente manera.

  1. El navegador verifica si el padre directo del elemento seleccionado tiene un controlador de eventos onclick registrado para la fase de propagación y, de ser así, lo ejecuta.
  2. Luego pasa al siguiente elemento ancestro inmediato y hace lo mismo, luego al siguiente, y así sucesivamente hasta llegar al elemento.

Entonces, cuando se hace clic en el elemento, el evento se expande a su elemento antepasado. No importa cuándo y cómo se crea el elemento.

Refactorizar su código con delegación de eventos sería algo como lo siguiente.

 document.addEventListener('click', (event) => { if (event.target.tagName == 'BUTTON') { // make sure the target is a button element const button = event.target; // this is the button clicked. const classNames = event.target.classList if (classNames.contains('new-book')) { const input = document.querySelector('.book-input'); openInput(input); } else if (classNames.contains('add-input')) { button.addEventListener('click', addABook); } else if (classNames.contains('remove-book')) { button.addEventListener('click', doThis); } } })

nota: no estoy seguro de por qué agrega otro detector de eventos cuando se hace clic en un botón. Esto es solo un refactor en una perspectiva de event delegation

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!