Pregunta

Por alguna extraña razón estoy haciendo que mi casilla de confirmación aparezca dos veces. Aquí está mi código:

$(".DeleteComment").live("click", function(){

    var CommentID = $(this).attr("rel");
    var confirm

    if (!confirm('Are you sure you want to permanently delete this comment?')){

        return false;

    }else{
        $(this).html("loading").css("color", "#999");
        //AJAX HERE
        return false;
    }


});
¿Fue útil?

Solución

¿Carga algún contenido dinámicamente (a través de ajax)? Podría darse el caso de que el evento de clic esté vinculado al mismo elemento dos veces, lo que da como resultado la doble confirmación.

Otros consejos

prueba esto:

prueba esto:

<*>blockDelete = false; $(".DeleteComment").live("click", function(event){ event.preventDefault(); //event.stopPropagation(); // it is not necessary if (!

prueba esto:

<*>blockDelete) {

prueba esto:

<*>blockDelete =true; var rconfirm = confirm('Are you sure you want to permanently delete this comment?'); if (rconfirm) { $(this).html("loading").css("color", "#999"); var CommentID = $(this).attr("rel"); //AJAX HERE //return the value "false" the variable "

prueba esto:

<*>blockDelete" once again ajax response } } });

Ocurre cuando vinculamos eventos en los elementos que se cargan dinámicamente a través de AJAX

Por ejemplo, por ejemplo, estamos cargando contenido html dinámico (por ejemplo, contenido dinámico en modo modal) al hacer clic en el botón de formulario edit ,

Y en ese contenido si tenemos evento de clic enlazado en algún botón , por ejemplo. botón delete , luego, cada vez que hacemos clic en el botón edit , vincula el evento click para delete botón cada vez,

Y si ha configurado la casilla de confirmación en el evento de clic del botón delete , entonces le preguntará cuantas veces se haya enlazado para ese evento de clic significa aquí si Hemos hecho clic en el botón de formulario edit 5 veces y luego pedirá su confirmación 5 veces.

Entonces, para resolver ese problema, puede desenlazar el evento cada vez antes de vincular el evento al elemento cargado dinámicamente de la siguiente manera:

$(document).off('click', '.DeleteComment').on('click', '.DeleteComment', function () {
   if (confirm('Are you sure you want to permanently delete this comment?')){
      //Delete process
      return true;
   }
   return false;
}

O Otra forma de resolver este problema es agregar su secuencia de comandos en la página principal, significa que la página estática no está cargada dinámicamente .

¿Intentó eliminar el var confirm no utilizado?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top