jQuery / Javascript确认两次出现
-
05-07-2019 - |
题
出于某种奇怪的原因,我的确认箱出现了两次。这是我的代码:
$(".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
?
不隶属于 StackOverflow