Javascript onclick事件在IE8中无效

时间:2012-09-24 19:15:42

标签: javascript internet-explorer-8 onclick

我的应用程序中有一个按钮,当您单击它时,会弹出一个弹出窗口,询问您是否确定要继续。通常,该代码将在我们的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事件,这使弹出窗口显示,但随后它不会消失。

1 个答案:

答案 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

中测试并查看它是否有效
相关问题