>我的应用程序中有一个按钮,当您单击它时,它会弹出一个弹出窗口,询问您是否确定要继续。通常,该代码将位于我们的HTML中,但是对于此特定弹出窗口,它必须使用Javascript。无论如何,弹出窗口在Firefox,Chrome和IE9中工作正常,但在IE8中不起作用。这是非常令人沮丧的。有人对如何解决这个问题有任何想法吗?这是我的代码:
function graphicalAppConfirm() {
var graphical = $('#application_graphical').is(':checked');
if (graphical == true) {
$('.default_action').attr('onclick', "return confirm('This setting cannot be undone. Are you sure you wish to continue?')");
}
else {
$('.default_action').removeAttr('onclick');
}
}
我尝试改用 onmousedown 事件,这导致弹出窗口出现,但随后它不会消失。
尝试使用绑定和取消绑定单击。您不一定关心属性。
function graphicalAppConfirm() {
var graphical = $('#application_graphical').is(':checked');
if (graphical == true) {
$('.default_action').click(function() { return confirm('This setting cannot be undone. Are you sure you wish to continue?'); });
} else {
$('.default_action').unbind('click');
}
}
如果您使用的是jQuery 1.7+,则建议使用on/off而不是bind/unbind。请参阅文档 http://api.jquery.com/off/
更新:下面是一个jQuery 1.8的示例,您可以根据自己的使用进行修改。您可能希望在更改复选框时执行开/关功能,这就是此示例的工作方式。
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
</head>
<body>
<button id="theone">Does nothing...</button>
<label for="check"><input id="check" type="checkbox" />Enable Button</label>
<div id="output" style="display:none;">Click registered.</div>
<script>
function callback() {
$("#output").show().fadeOut("slow");
}
$("#check").change(function() {
if (this.checked) {
$("body").on("click", "#theone", callback)
.find("#theone").text("Click Me Enabled!");
} else {
$("body").off("click", "#theone", callback)
.find("#theone").text("Click Me Disabled");
}
});
</script>
</body>
</html>
您可以从那里弄清楚其余的。您可以测试并查看它在IE 8中的工作 http://jsbin.com/ojejar/6