Javascript onclick事件在IE8中不起作用

Javascript onclick事件在IE8中不起作用,javascript,internet-explorer-8,onclick,Javascript,Internet Explorer 8,Onclick,我在我们的应用程序中有一个按钮,当你点击它时,会弹出一个窗口,询问你是否确定要继续。通常,该代码将在我们的HTML中,但对于这个特定的弹出窗口,它必须在Javascript中。无论如何,这个弹出窗口在Firefox、Chrome和IE9中都可以正常工作,但在IE8中却不起作用。这是非常令人沮丧的。有人对如何解决这个问题有什么想法吗?这是我的密码: function graphicalAppConfirm() { var graphical = $('#application_graphical

我在我们的应用程序中有一个按钮,当你点击它时,会弹出一个窗口,询问你是否确定要继续。通常,该代码将在我们的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'); 
  }
}
如果您使用的是jquery1.7+,那么建议使用on/off而不是bind/unbind。请参阅文档

更新:下面是一个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>

什么都不做。。。
启用按钮
单击注册。
函数回调(){
$(“#输出”).show().fadeOut(“慢”);
}
$(“#检查”).change(函数(){
如果(选中此项){
$(“body”)。在(“单击”,“单选”,回调)
.find(“#theone”).text(“已启用单击我!”);
}否则{
$(“body”).off(“单击”,“单键”,回调)
.find(“#theone”).text(“禁用单击我”);
}
});

你可以从那里找到剩下的。您可以在IE8中测试并看到它的工作情况

我正在使用JQuery 1.8,所以这不应该是一个问题。唉,你的建议不起作用。它也没有破坏任何东西,但不幸的是,IE8问题仍然存在。我同意这个答案-你不应该使用attr方法来设置点击事件。如果.click和.unbind不起作用,则可能是确认方法中的代码有问题,我想它会显示弹出窗口?是的,确认方法中唯一的代码是显示一个带有消息的弹出窗口。我无法想象这段代码会有什么问题,就像我说的,我的代码在所有浏览器中都能正常工作,只有IE8例外(它在IE9中工作得非常好)。另外,我必须承认,我主要是一名Javascript程序员,也是一名新手,所以我在将上面的JQuery代码翻译成Javascript时遇到了问题。有人能帮我吗?啊,我道歉。我猜今天起床的时候床不对了。我在看我们的JQuery UI。。。我们有JQuery UI的1.8.6版,但只有JQuery的1.6.1版。我的错误。.on()和.off()方法是在1.7中添加的,所以难怪我不能让它工作。你还有其他建议吗?谢谢。我的建议是试着让它以最简单的形式工作,就像我上面所做的那样。然后让它与您的代码库一起工作。很明显,你的代码有问题,正如我在IE8中发布的例子。