11

次の自己完結型コードを実行すると、チェックボックスが一度チェックされ、チェックが外されますが、メッセージがトグルを暗示しているように見えても、その後はそうではありません。

<html>  
<head>
<title>dummy</title>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<input id="fc" type="checkbox" />
<script>
function f () {
  if (typeof $("#fc").attr("checked") !== 'undefined') {
    alert("checked, unchecking");
    $("#fc").removeAttr("checked");
  } else {
    alert("unchecked, checking");
    $("#fc").attr("checked", "checked");
  }
  setTimeout(f, 1000);
}
setTimeout(f, 1000);
</script>
</body>
</html>
4

1 に答える 1

20

チェックボックスをチェックおよびチェック解除するには、 .attr() の代わりに .prop() を使用する必要があります

$("#fc").prop("checked", true);// true to check false to uncheck

:checked フィルターも使用して、チェックボックスがオンになっているかどうかを確認します

function f () {
    if ($("#fc").is(":checked")) {
        alert("checked, unchecking");
        $("#fc").prop("checked", false);
    } else {
        alert("unchecked, checking");
        $("#fc").prop("checked", true);
    }
    setTimeout(f, 1000);
}
setTimeout(f, 1000);

上記のサンプルは、次のように簡略化できます。

function f () {
    $("#fc").prop("checked", !$("#fc").is(":checked"));
}
setInterval(f, 1000);

デモ:フィドル

于 2013-08-26T08:07:20.353 に答える