出于某种奇怪的原因,我的确认箱出现了两次。这是我的代码:

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


});
有帮助吗?

解决方案

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

其他提示

试试这个:

试试这个:

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

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

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

如果我们在某个按钮上有绑定点击事件,则在该内容中,例如 delete 按钮,然后每次我们点击 edit 表单按钮,它将 click 事件绑定到 delete 每次按钮,

如果您在 delete 按钮的点击事件上设置了确认框,那么它将询问您为该点击事件绑定的时间意味着此处我们点击了 edit 表单按钮5次,然后会要求您确认5次。

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

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

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

您是否尝试删除未使用的 var confirm

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top