Question

Pour une raison étrange, je reçois deux fois ma boîte de confirmation. voici mon code:

$(".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;
    }


});
Était-ce utile?

La solution

Chargez-vous du contenu de manière dynamique (via ajax)? Il se peut que l'événement click soit lié au même élément deux fois, ce qui entraîne la double confirmation.

Autres conseils

essayez ceci:

essayez ceci:

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

essayez ceci:

<*>blockDelete) {

essayez ceci:

<*>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 "

essayez ceci:

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

Cela se produit lorsque nous lions un événement aux éléments chargés dynamiquement via AJAX

.

Par exemple, nous chargeons du contenu HTML dynamique (par exemple, du contenu dynamique en mode modal) en cliquant sur le bouton de formulaire modifier ,

.

Et dans ce contenu, si nous avons un événement de clic lié sur un bouton , par exemple. bouton delete , puis chaque fois que nous cliquons sur le bouton de formulaire edit , lie l'événement click à delete bouton à chaque fois,

Et si vous avez coché la case de confirmation sur l'événement de clic du bouton supprimer , il vous le demandera autant de fois qu'il a été lié pour cet événement de clic signifie ici si nous avons cliqué 5 fois sur le bouton modifier du formulaire, votre confirmation vous sera alors demandée 5 fois.

Donc, pour résoudre ce problème , vous pouvez dissocier l'événement chaque fois avant de lier l'événement à un élément chargé de manière dynamique, comme suit:

$(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 Une autre façon de résoudre ce problème consiste à ajouter votre script dans la page principale, ce qui signifie qu'une page statique n'est pas chargée dynamiquement .

Avez-vous essayé de supprimer le var confirm non utilisé?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top