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;
    }


});
Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top