jQuery/Javascript确认两次出现

Ada*_*dam 4 javascript jquery confirm

出于某些奇怪的原因,我得到了两次确认框.这是我的代码:

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


});
Run Code Online (Sandbox Code Playgroud)

Mar*_*arz 13

你是否动态加载任何内容(通过ajax)?可能是click事件被绑定到同一元素两次导致双重确认的情况.


Har*_*hil 5

当我们在通过 AJAX 动态加载的元素上绑定事件时,就会发生这种情况

例如,我们在单击edit表单按钮时加载一些动态 html 内容(例如模式中的动态内容),

在该内容中,如果我们在某个按钮(例如按钮)上绑定了单击事件delete,那么每次我们单击edit表单按钮时,它都会将click事件绑定到delete按钮,

如果您在按钮的单击事件上设置了确认框delete,那么它会询问您与该单击事件绑定的次数一样多的次数,这意味着如果我们单击edit表单按钮 5 次,那么它会要求您确认 5 次。

因此,为了解决这个问题,您可以unbind每次将事件绑定到动态加载的元素之前,如下所示:

$(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;
}
Run Code Online (Sandbox Code Playgroud)

或者解决此问题的另一种方法是将脚本添加到主页中,这意味着静态页面不在动态加载的页面中