7

次のコードでは、jQuery を使用しています。

$("input").change(function(evt) {
  console.log("change event handler invoked", evt);
  console.log($("input").is(':checked'));
  console.log($("input").attr("checked"));
  console.log($("input").prop("checked"));
});

$("input").trigger("click");
$("input").trigger("click");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="the-input" type="checkbox">

is(':checked')とはprop("checked")両方とも true を表示できますが、`attr("checked") は未定義と表示されます。同じだと思った?(チェックボックスを手動でクリックしても同じ効果です)。

また、checkedチェックボックスがデフォルトでチェックされるようにHTMLで設定すると(http://jsfiddle.net/UcGyM/1/)、両方のトリガーに対してattr("checked")出力されるため、checkedチェックされているかどうか - それはなぜですか? checked(どちらも が表示されますが、$("input").attr("checked", true);or$("input").attr("checked", false);をオンまたはオフにできるのも奇妙です。)

関連する質問は、 を使用することを主張したい場合、それは HTML で属性attr("checked")を持たなければならないということですか? ( or orはデフォルトでオフにしないためです。checked<input type="checkbox" checked>checked="false"checked=""checked="0"

4

1 に答える 1

5

いいえ、それらは同じではありません。 .attrDOM 属性です。checked要素が

<input type=checkbox checked>

クリックすると変化するプロパティです。

関連する質問についてcheckedは、ブール属性であるため、checked属性がまったくないときに要素がチェックされていないことを指定する方法はありません。

jQuery API自体がこれがjQuery 1.6の時点で間違っていると言ってattrいるのに、なぜ使用を主張したいのかわかりません

于 2013-04-02T15:43:03.490 に答える