Bien sûr, quelque part ailleurs dans votre (vos) script (s), l'événement "click" est à nouveau lié au même élément, comme le suggèrent plusieurs autres réponses / commentaires.
J'ai eu un problème similaire et pour vérifier cela, j'ai simplement ajouté une console.log
commande à mon script, comme dans l'extrait de code suivant:
$("#link_button")
.button()
.click(function () {
console.log("DEBUG: sliding toggle...");
$("#attachmentForm").slideToggle("fast");
});
Si, en cliquant sur le bouton, vous obtenez quelque chose de similaire à l'image ci-dessous à partir de la console de développement de votre navigateur (comme je l'ai fait), vous savez avec certitude que l' click()
événement a été lié deux fois au même bouton.

Si vous avez besoin d'un patch rapide, la solution proposée par d'autres commentateurs d'utiliser la off
méthode (btw unbind
est obsolète depuis jQuery 3.0) pour dissocier l'événement avant de le (re) lier fonctionne bien, et je le recommande aussi:
$("#link_button")
.button()
.off("click")
.click(function () {
$("#attachmentForm").slideToggle("fast");
});
Malheureusement, ce n'est qu'un patch temporaire! Une fois que le problème de rendre votre patron heureux est résolu, vous devriez vraiment creuser un peu plus votre code et résoudre le problème de "liaison dupliquée".
La solution réelle dépend bien sûr de votre cas d'utilisation spécifique. Dans mon cas, par exemple, il y avait un problème de «contexte». Ma fonction était invoquée à la suite d'un appel Ajax appliqué à une partie spécifique du document: recharger l'ensemble du document rechargeait en fait à la fois les contextes «page» et «élément», ce qui entraînait la liaison deux fois de l'événement à l'élément .
Ma solution à ce problème consistait à tirer parti de la fonction jQuery one , qui est la même que sur, à l'exception du fait que l'événement est automatiquement dissocié après son premier appel. C'était idéal pour mon cas d'utilisation, mais encore une fois, ce n'est peut-être pas la solution pour d'autres cas d'utilisation.