0

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

4

1 回答 1

1

尝试使用绑定和取消绑定单击。您不一定关心属性。

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中测试并查看它的工作原理

于 2012-09-24T19:18:36.533 回答