Sicuramente da qualche altra parte nei tuoi script l'evento "click" viene nuovamente associato allo stesso elemento, come suggeriscono molte altre risposte / commenti.
Ho avuto un problema simile e per verificarlo, ho semplicemente aggiunto un console.logcomando al mio script, come nel seguente frammento:
$("#link_button")
.button()
.click(function () {
console.log("DEBUG: sliding toggle...");
$("#attachmentForm").slideToggle("fast");
});
Se, facendo clic sul pulsante, ottieni qualcosa di simile all'immagine sottostante dalla console per sviluppatori del tuo browser (come ho fatto io), allora sai per certo che l' click()evento è stato associato due volte allo stesso pulsante.

Se hai bisogno di una patch veloce, la soluzione proposta da altri commentatori di utilizzare il offmetodo (btw unbindè deprecato da jQuery 3.0) per svincolare l'evento prima di (ri) associare funziona bene, e lo consiglio anche io:
$("#link_button")
.button()
.off("click")
.click(function () {
$("#attachmentForm").slideToggle("fast");
});
Sfortunatamente, questa è solo una patch temporanea! Una volta risolto il problema di rendere felice il tuo capo, dovresti davvero scavare un po 'di più nel tuo codice e risolvere il problema del "binding duplicato".
La soluzione effettiva dipende ovviamente dal tuo caso d'uso specifico. Nel mio caso, ad esempio, c'era un problema di "contesto". La mia funzione veniva invocata come risultato di una chiamata Ajax applicata a una parte specifica del documento: ricaricare l'intero documento in realtà stava ricaricando entrambi i contesti "pagina" e "elemento", risultando associato all'elemento due volte .
La mia soluzione a questo problema è stata quella di sfruttare la funzione jQuery one , che è la stessa di on con l'eccezione che l'evento viene automaticamente scollegato dopo la sua prima chiamata. Era l'ideale per il mio caso d'uso ma, ancora una volta, potrebbe non essere la soluzione per altri casi d'uso.