jQuery / Javascript确认两次出现

时间:2009-11-26 01:55:51

标签: 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;
    }


});

4 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:4)

试试这个:

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

      }
    }

});

答案 2 :(得分:1)

当我们将事件绑定到通过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;
}

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

答案 3 :(得分:0)

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