0
votes

Événement de clic JS déclenché deux fois

Obtenir un événement de clic deux fois sur le même élément sur ce code et ne pas utiliser pourquoi

document.addEventListener('click', function (event) {

        console.log("click");
        
        if (!event.target.closest('.expand')) return;

        console.log("clicked me");

    }, false);

console en un clic: cliquez x 2 m'a cliqué x 2


3 commentaires

Le code manque de détails. Pouvez-vous s'il vous plaît fournir plus de détails car il n'est pas clair quel est le problème auquel vous êtes confronté à partir du code ci-dessus.


Quelle est la solution?


Il n'y a pas beaucoup de contexte ici, mais ce code spécifique ne devrait pas enregistrer deux clics, vous pourriez donc ajouter l'événement (en exécutant ce code) deux fois. console.log('event added') juste avant d'ajouter l'événement et voir s'il s'imprime deux fois.


3 Réponses :


1
votes

Vous ajoutez probablement deux fois l'écouteur d'événements . Placez un point d'arrêt ou un message de journal sur la ligne avant document.addEventListener('click', function (event) {


0 commentaires

-1
votes

Si votre problème est de définir un événement clic double sur un élément avant qu'il ne rende sa fonction, utilisez

document.addEventListener('dblclick', function (e) { code.... } )


0 commentaires

0
votes

semblait que l'ajout du code enveloppé oike ce qui suit ajoutait deux fois le code en mémoire bien qu'il soit sur la page une fois ... très étrange, toute réponse à ce problème serait cool.

(window.onload = function () {
  // code here
})();


3 commentaires

En fait, il ne s'agit pas d'ajouter deux fois le code. Il existe quelque chose appelé Expression de fonction immédiatement invoquée (IIFE) developer.mozilla.org/en-US/docs/Glossary/IIFE


Bien sûr, je comprends ce qu'est une iife, mais comment se fait-il que l'écouteur d'événements soit ajouté deux fois dans ce cas ... une autre bizarrerie folle de JavaScript peut-être?


avez-vous essayé sans "iife"? Probablement, même si vous n'avez pas mis "iife", votre code sera exécuté une fois. Je ne suis pas sûr. Chaque fois que vous ajoutez un écouteur d'événement (ici, vous ajoutez un écouteur d'événement à onload événement onload ), il écoutera à moins que vous ne le supprimiez explicitement.