jQuery / Javascript bestätigen kommt zweimal
-
05-07-2019 - |
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;
}
});
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
?