我的应用程序中有一个按钮,当您单击它时,会弹出一个弹出窗口,询问您是否确定要继续。通常,该代码将在我们的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事件,这使弹出窗口显示,但随后它不会消失。
答案 0 :(得分:1)
尝试使用bind和unbind click。你不必关心这些属性。
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+,则建议使用开/关而不是绑定/取消绑定。请参阅文档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
中测试并查看它是否有效