【问题标题】:confirm not working after first click: confirm is not a function第一次点击后确认不起作用:确认不是功能
【发布时间】:2016-10-01 04:41:43
【问题描述】:
我有这个 jQuery 代码,当用户单击 div 中的任何链接时,它会弹出确认框。但是如果我首先点击一个链接,确认框会弹出,如果我点击取消操作被取消并且console.log显示confirm is not a function,如果我点击OK操作被执行并且console.log显示@987654323 @ 还有如果我再次点击链接,确认框不会再次弹出,直到我重新加载页面。
请问有人知道我做错了什么吗?
$("#aye a").click(function() {
str = "Removing this Photo, It can not be reversed\nAre You sure You want to remove it?";
confirm = confirm(str);
if (confirm) {
$("#div").html("deleted");
}
});
<div id="aye">
<a href="javascript:;">link 1</a>
<a href="javascript:;">link 2</a>
<a href="javascript:;">link 3</a>
<a href="javascript:;">link 4</a>
</div>
<div id="div"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
View on jsFiddle
【问题讨论】:
标签:
javascript
jquery
confirm
【解决方案1】:
您正在使用名为 confirm 的全局变量来跟踪 window.confirm。
这是一种解决方案,我将您的局部变量称为confirm2
$("#aye a").click(function(){
var str = "Removing this Photo, It can not be reversed\nAre You sure You want to remove it?";
var confirm2 = confirm(str);
if(confirm2){
$("#div").html("deleted");
}
});
请注意,我还添加了 var 关键字以防止这些变量泄漏到全局空间中。
【解决方案2】:
$("#aye a").click(function(){
if(confirm( "Removing this Photo, It can not be reversed\nAre You sure You want to remove it?"))
{
// Add class to deleted item and remove click event so user cannot click again
$(this).addClass("deleted").off("click");
$("#div").html("deleted");
}
});
a.deleted{
color : silver;
cursor : not-allowed
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="aye">
<a href="javascript:;">link 1</a>
<a href="javascript:;">link 2</a>
<a href="javascript:;">link 3</a>
<a href="javascript:;">link 4</a>
</div>
<div id="div"></div>