jQuery / Javascript confirma que viene dos veces
-
05-07-2019 - |
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;
}
});
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?