Claro que em algum outro lugar em seu (s) script (s) o evento "click" está sendo vinculado novamente ao mesmo elemento, como várias outras respostas / comentários estão sugerindo.
Tive um problema semelhante e para verificar isso, simplesmente adicionei um console.log
comando ao meu script, como no seguinte snippet:
$("#link_button")
.button()
.click(function () {
console.log("DEBUG: sliding toggle...");
$("#attachmentForm").slideToggle("fast");
});
Se, ao clicar no botão, você obtiver algo semelhante à imagem abaixo no console do desenvolvedor do seu navegador (como eu fiz), então você sabe com certeza que o click()
evento foi vinculado duas vezes ao mesmo botão.
Se você precisar de um patch rápido, a solução proposta por outros comentaristas de usar o off
método (btw unbind
está obsoleto desde o jQuery 3.0) para desvincular o evento antes de (re) vinculá-lo funciona bem, e eu a recomendo também:
$("#link_button")
.button()
.off("click")
.click(function () {
$("#attachmentForm").slideToggle("fast");
});
Infelizmente, este é apenas um patch temporário! Uma vez que o problema de fazer seu chefe feliz for resolvido, você deve realmente cavar um pouco mais em seu código e corrigir o problema da "ligação duplicada".
A solução real depende, é claro, do seu caso de uso específico. No meu caso, por exemplo, houve um problema de "contexto". Minha função estava sendo invocada como resultado de uma chamada Ajax aplicada a uma parte específica do documento: recarregar todo o documento era, na verdade, recarregar os contextos de "página" e "elemento", resultando no evento sendo vinculado ao elemento duas vezes .
Minha solução para este problema foi a alavancar o jQuery uma função, que é o mesmo que no com a ressalva de que o evento é automaticamente desacoplado após a sua primeira chamada. Isso era ideal para meu caso de uso, mas, novamente, pode não ser a solução para outros casos de uso.