Frage

Aus irgendeinem seltsamen Grund, warum ich bin immer mein bestätigen Feld zweimal kommen. hier ist mein 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;
    }


});
War es hilfreich?

Lösung

Legen Sie Inhalte dynamisch (über Ajax)? Es könnte der Fall sein, dass das Click-Ereignis auf das gleiche Element in der doppelten Bestätigung zweimal resultierenden gebunden ist.

Andere Tipps

versuchen Sie dies:

$_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

      }
    }

});

Es passiert, wenn wir Ereignis auf die Elemente binden, die sind dynamisch über AJAX geladen

So zum Beispiel wir einige dynamischen HTML-Inhalte (zum Beispiel dynamische Inhalte in modal) auf Klicken der edit Form Button laden,

Und in diesem Inhalt, wenn wir binded Click-Ereignis auf einige Taste z.B. delete Taste, dann jedes Mal, wenn wir auf edit Formular-Schaltfläche klicken, es bindet das click Ereignis jedes Mal delete Taste,

Und wenn Sie bestätigen Box auf Click-Ereignis von delete Taste dann eingestellt haben, es wird Sie fragen, so oft wie es für das Click-Ereignis binded wurde bedeutet hier, wenn wir edit Form Taste 5 geklickt haben, mal dann wird es fragt nach Ihrer Bestätigung 5-mal.

Also für dieses Problem zu lösen Sie können das Ereignis vor jedem unbind Ereignisbindung , um dynamisch geladenes Element, wie folgend:

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

oder Ein andere Möglichkeit, dieses Problem zu lösen, ist das Skript in Haupt-Seite hinzuzufügen, bedeutet statische Seite nicht in dynamisch eine geladen .

Haben Sie versucht, zu entfernen, dass nicht verwendete var confirm?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top