Javascript onclick 事件在 IE8 中不起作用



>我的应用程序中有一个按钮,当您单击它时,它会弹出一个弹出窗口,询问您是否确定要继续。通常,该代码将位于我们的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

最新更新