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+ を使用している場合は、バインド/アンバインドではなく、オン/オフをお勧めします。ドキュメントを参照してください 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 に答える