web-dev-qa-db-fra.com

Vérifiez si un élément a un écouteur d'événement dessus. pas de requête

comment vérifier si un élément a un écouteur d'événement dessus, si j'utilise une fonction inline dessus comme le code ci-dessous. parce que j’ai une fonction qui rappelle la fonction et ajoute l’auditeur d’événements, mais elle entraîne l’écoute d’écouteurs d’événements en double, ce qui lui permet de déclencher une fonction deux fois. Alors, comment puis-je le vérifier pour l'empêcher d'ajouter un écouteur d'événements s'il existe déjà. Merci! :RÉ

for (var a = 0;a<formFieldInput.length;a++) {
            if(formFieldInput[a].hasAttribute("name") && formFieldInput[a].attributes.title.value !== "Valid Until") {
                formFieldInput[a].addEventListener("click",function(event) {
                    toggleFieldList(event,"show");
                });
            }
58
Mr. Programmer

Il n'y a pas de fonction JavaScript pour y parvenir. Toutefois, vous pouvez définir une valeur booléenne sur true lorsque vous ajoutez l'écouteur et sur false lorsque vous le supprimez. Vérifiez ensuite ce booléen avant d’ajouter potentiellement un écouteur d’événements en double.

Doublage possible: Comment vérifier si un écouteur d'événements attaché dynamiquement existe ou non?

50
Ryan Warner

De nos jours (2016) dans la console ChromeDev Tools, vous pouvez exécuter rapidement cette fonction ci-dessous pour afficher tous les écouteurs d'événement associés à un élément.

getEventListeners(document.querySelector('your-element-selector'));
51
arufian

Tu n'as pas besoin de. Il suffit de le coller autant de fois que vous le souhaitez et autant de fois que vous le souhaitez. MDN explique les écouteurs d'événements identiques :

Si plusieurs EventListeners identiques sont inscrits sur le même EventTarget avec les mêmes paramètres, les instances en double sont ignorées. Ils ne font pas appeler EventListener deux fois et il n'est pas nécessaire de les supprimer manuellement avec la méthode removeEventListener.

25
Ron Royston