El evento click () llama dos veces en jquery

Configuré un elemento de enlace y llamé a su evento de clic en jquery, pero el evento de clic está llamando dos veces, por favor vea debajo el código de jquery.

$("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); }); 

Por favor avise.

Gracias.

Asegúrese y asegúrese de no haber incluido accidentalmente su script dos veces en su página HTML.

Desenlace antes del clic;

 $("#link_button").unbind('click'); $("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); }); 

Significa que su código incluye el guion jquery dos veces. Pero prueba esto:

 $("#btn").unbind("click").click(function(){ //your code }); 

Intenté, e.stopImmediatePropagation() ; Esto parece funcionar para mí.

En mi caso, utilicé el siguiente script para superar el problema

 $('#id').off().on('click',function(){ //... }); 

off() desvincula todos los eventos #id a #id . Si desea desvincular solo el evento click , entonces use off('click') .

Simplemente llame a .off () justo antes de llamar a .on ().

Esto eliminará todos los controladores de eventos:

 $(element).off().on('click', function() { // function body }); 

Para eliminar solo los controladores de eventos ‘clic’ registrados:

 $(element).off('click').on('click', function() { // function body }); 

Una solución bastante común para el problema de dos clics es poner

 e.stopPropagation() 

al final de su función (suponiendo que usa la function(e) que es). Esto evita que el evento burbujee, lo que podría conducir a una segunda ejecución de la función.

Tuve el mismo problema, pero puedes intentar cambiar este código

 $("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); }); 

a esto:

 $("#link_button").button(); $("#link_button").unbind("click").click(function () { $("#attachmentForm").slideToggle("fast"); }); 

Para mí, este código resolvió el problema. Pero tenga cuidado de no incluir accidentalmente su script dos veces en su página HTML. Creo que si estás haciendo estas dos cosas correctamente, tu código funcionará correctamente. Gracias

por favor prueba esto

 $('#ddlSupervisor').live('change', function (e) { if (e.handled !== true) { //this makes event to fire only once getEmployeesbySupervisor(); e.handled = true; } }); 

Esto es definitivamente un error especialmente cuando se trata de Firefox. Intenté todas las respuestas anteriores y finalmente lo puse como error por muchos expertos sobre SO. Entonces, finalmente se me ocurrió esta idea al declarar variables como

 var called = false; $("#ColorPalete li").click(function() { if(!called) { called = true; setTimeout(function(){ //< -----This can be an ajax request but keep in mind to set called=false when you get response or when the function has successfully executed. alert('I am called'); called = false; },3000); } }); 

De esta forma, primero verifica más bien si la función se llamó anteriormente o no.

Agregar e.preventDefault(); al comienzo de mi función funcionó para mí.

Esta es una pregunta anterior, pero si está utilizando la delegación de eventos, esto es lo que me causó.

Después de eliminar .delegate-two , dejó de ejecutarse dos veces. Creo que esto sucede si ambos delegates están presentes en la misma página.

 $('.delegate-one, .delegate-two').on('click', '.button', function() { /* CODE */ }); 

este fragmento de código no contiene nada malo. Es otra parte de tu script como @karim dijo

En mi caso, funcionaba bien en Chrome e IE llamaba a .click() dos veces. si ese era su problema, lo solucioné devolviendo el valor falso, después de llamar al evento .click()

  $("#txtChat").keypress(function(event) { if (event.which == 13) { $('#btnChat').click(); $('#txtChat').val(''); return false; } }); 

Llamar unbind resolvió mi problema:

 $("#btn").unbind("click").click(function() { // your code }); 

Me engañó una selección que combinaba varios elementos, por lo que se hizo clic en cada uno de ellos. :first ayudado:

 $('.someClass[data-foo="'+notAlwaysUniqueID+'"]:first').click(); 

Yo también tuve este problema en FF. Sin embargo, mi etiqueta estaba ligada a una etiqueta . Aunque la etiqueta no iba a ningún lado, aún así hizo doble clic. Cambié la etiqueta por una etiqueta y el problema del doble clic desapareció.

Otra alternativa es eliminar completamente el atributo href si el enlace no va a ninguna parte.

$(elem).click(function(){}); este problema porque mi $(elem).click(function(){}); el script se colocó en línea en un div que se configuró en style="display:none;" .

Cuando la pantalla css se cambió a bloque, la secuencia de comandos agregaría el detector de eventos por segunda vez. Moví la secuencia de comandos a un archivo .js separado y el oyente duplicado del evento ya no se inició.

Cuando uso este método en la página de carga con jquery, escribo $('#obj').off('click'); antes de configurar la función de clic, para que la burbuja no se produzca. Funciona para mi.

Mi respuesta simple fue convertir el enlace de clic en una función y llamarlo desde el clic del elemento, ¡funcionó bien! mientras que ninguno de los anteriores

No estoy seguro por qué pero tuve este problema con

 $(document).on("click", ".my-element", function (e) { }); 

Cuando lo cambié a

 $(".my-element").click(function () { }); 

Problema fue resuelto. Pero definitivamente algo está mal en mi código.

Resolví este problema cambiando el tipo de elemento. en lugar de botón coloco la entrada, y este problema no ocurre más.

instesd de:

  

reemplazar con:

  

Tenía el mismo problema. Esto funcionó para mí –

 $('selector').once().click(function() {}); 

Espero que esto ayude a alguien.

En mi caso, el HTML fue presentado así:

  

Y mi jQuery fue así:

 jQuery('.share').toggle(); 

Me confundió porque nada parecía estar sucediendo. El problema era que el .share interno de .share cancelaría el .share externo de .share .