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

190
Visualizações
Cómo eliminar un detector de eventos en curry

Tengo un addEventListener que usa una función curry para poder usar los parámetros de la función.

 const curryFunction = (product) => { return function curry(e) { //do stuff here } } const addEvent = (product) => { document.getElementById('button').addEventListener('click', curryFunction(product)) }

pero quiero poder eliminarlo, busqué preguntas similares a esta en el desbordamiento de la pila, pero como no tenían este caso específico, no parecían funcionar. Lo intenté

 document.getElementById('button').removeEventListener('click', curryFunction(product)) // just didn't do anything document.getElementById('button').removeEventListener('click', curryFunction()) // gave me error document.getElementById('button').removeEventListener('click', curry()) // gave me error

junto con las similitudes tales como

 document.getElementById('button').removeEventListener('click', curryFunction) document.getElementById('button').removeEventListener('click', curryFunction(product))//this one was nested inside a function so I wouldn't get an error || product had the same value as the product in the addEvent(product) document.getElementById('button').removeEventListener('click', curry) document.getElementById('button').removeEventListener('click', curry(e))//this one was nested inside a function so I wouldn't get an error with the e

y ninguno de ellos funcionó, entonces, ¿cuáles son las formas de hacerlo?

  1. Eliminar una función eventListener curry o
  2. Tener un eventListener sin .bind() porque eso tampoco funcionó
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El problema es que removeEventListener requiere una referencia al mismo "objeto" exacto, porque usará la identidad del objeto para ver qué oyente eliminar.

La función curryFunction crea una nueva instancia cada vez que se llama, por lo que debe realizar un seguimiento de esa función para eliminarla más adelante:

 var myListener = undefined; const addEvent = (product) => { // Store the reference to the listener somewhere myListener = curryFunction(product); document.getElementById('button').addEventListener('click', myListener) } // later on use myListener to remove the listener document.getElementById('button').removeEventListener('click', myListener)

Tenga en cuenta que, en este caso, si addEvent se llama dos veces sin llamar a removeEventListener en el medio, perderá la referencia. Entonces, debe verificar, antes de agregar un nuevo oyente, que aún no tiene uno en su lugar / eliminar el existente o puede usar una matriz / objeto para realizar un seguimiento de múltiples oyentes al mismo tiempo.

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