出于某种奇怪的原因,我的确认箱出现了两次。这是我的代码:
$(".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;
}
});
答案 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
表单按钮
在该内容中,如果我们在某个按钮上绑定了点击事件,例如delete
按钮,然后每次我们单击edit
表单按钮时,它会每次将click
事件绑定到delete
按钮,
如果您在delete
按钮的点击事件上设置了确认框,那么它将询问您与该点击事件绑定的时间 ,这表示我们是否点击了edit
5次表单按钮,然后将要求您确认5次。
因此,为解决该问题,您可以每次将事件绑定到动态加载的元素之前unbind
{1>},如下所示:
$(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
?