1. ホーム
  2. jquery

[解決済み] .prop('checked',false) or .removeAttr('checked')?

2022-08-07 02:35:34

質問

propメソッドの導入に伴い、チェックボックスのチェックを外す方法について知りたいのですが。 それはそうです。

$('input').filter(':checkbox').removeAttr('checked');

または

$('input').filter(':checkbox').prop('checked',false);

どのように解決するのですか?

jQuery 3

jQuery 3 の時点では removeAttr ではなく に対応するプロパティを設定します。 false を設定しなくなりました。

jQuery 3.0より前のバージョンでは .removeAttr() のようなブーリアン属性に対して checked , selected または readonly はまた、対応する名前のプロパティを false . この動作は Internet Explorer の古いバージョンでは必要でしたが、最近のブラウザでは正しくありません。なぜなら、属性は初期値を表し、プロパティは現在の(動的な)値を表すからです。

を使用することは、ほとんどの場合間違いです。 .removeAttr( "checked" ) を使うのはほぼ間違いです。唯一有用なのは、DOM を後で HTML 文字列に直列化する場合です。他の全ての場合において .prop( "checked", false ) が使われるべきです。

変更履歴

したがって .prop('checked',false) が正しい方法です。


オリジナルの回答(2011年)です。

ブール値のプロパティを持つ属性(そのうち checked はその一つです)。 removeAttr は自動的に基礎となるプロパティを false . (これは、jQuery 1.6.1で追加された後方互換性のための修正点の1つです)。

というわけで、どちらでも動作するのですが、2つ目の例( prop を使用) の方がより正しいです。もしあなたの目的がチェックボックスのチェックを外すことであるなら、あなたは本当に プロパティに影響を与えたいのです。 に影響を与えたいのであって、属性に影響を与えたいわけではありませんし、わざわざ removeAttr を経由する必要はありません。