jQuery / Javascript confirmar chegando duas vezes
-
05-07-2019 - |
Pergunta
Por algum motivo estranho eu estou recebendo minha caixa de confirmação chegando duas vezes. aqui está o meu 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;
}
});
Solução
Você carregar qualquer conteúdo dinamicamente (via ajax)? Poderia ser o caso que o evento clique é ligado ao mesmo elemento duas vezes resultando na dupla confirmação.
Outras dicas
tente o seguinte:
$_blockDelete = false;
$(".DeleteComment").live("click", function(event){
event.preventDefault();
//event.stopPropagation(); // it is not necessary
if (!$_blockDelete)
{
$_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 "$_blockDelete" once again ajax response
}
}
});
Isso acontece quando nos ligam evento sobre os elementos que são carregada dinamicamente via AJAX
Assim, por exemplo, está a colocar algum conteúdo HTML dinâmico (por exemplo, conteúdo dinâmico no modal) no clique do botão de formulário edit
,
E, em que o conteúdo se tivermos clique evento binded em algum botão por exemplo botão delete
, em seguida, cada vez que clicar no botão de formulário edit
, se liga o evento click
ao botão delete
cada vez,
E se você tiver confirmar caixa set no evento Click do botão delete
então, ele irá pedir quantas vezes foi binded para esse evento clique meio aqui se clicaram forma edit
botão 5 vezes, em seguida, ele vai pedir sua confirmação de 5 vezes.
Assim, para resolver essa questão você pode unbind
o evento de cada vez antes do evento de ligação para elemento carregado dinamicamente como a seguir:
$(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;
}
ou Outra forma de resolver este problema é adicionar o seu script na página principal, significa página estática não em dinamicamente carregado um .
Você tentou remover esse var confirm
não-usado?