jQuery 2.1.1 で prop() を使って checked を操作するときの動き

~prop()のjQueryバージョン間の違い~
2014/10/27

checkboxをprop()で操作

←操作対象のチェックボックス
$("#c1").prop("checked", ★); ※ボタンのラベルは★の内容。

チェックがつくグループ

チェックがはずれるグループ

プロパティ自体の削除。危険!

checked属性値の確認


Version チェック
の操作
備考
2.1.1 属性は変わらない。
2.0.0 属性は変わらない。
1.11.1 属性は変わらない。
1.11.0 属性は変わらない。
1.9.0 属性は変わらない。
1.8.3 属性は変わらない。しかし「attr("checked")」を実行すると「checked」が返る
1.8.0 属性は変わらない。しかし「attr("checked")」を実行すると「checked」が返る
1.7.0 属性は変わらない。しかし「attr("checked")」を実行すると「checked」が返る
1.6.2 属性は変わらない。しかし「attr("checked")」を実行すると「checked」が返る
1.6.1 属性は変わらない。しかし「attr("checked")」を実行すると「checked」が返る
1.6.0 属性は変わらない。
1.5.2以前 - メソッドがないのでエラーになる。

1.6.1~1.8.3は、prop()でチェックを入れたあとに「attr("checked")」を実行すると (本当は属性値は変わっていないのに)、「checked」が返ります。 しかしこの点はattr()の仕様の問題ですので、prop()自体は仕様が変わっていないことがわかります。

また、チェック状態の操作に関してprop()を使用した場合は、すべてのバージョンで問題なく行えます(本来当然ですが)。 一方attr()を使用した場合には、バージョンによって期待通りに動かない場合もあります。ですので、 チェック状態の操作に関しては、必ずprop()を使うようにしましょう。 チェック状態の操作に関してはattr()を使った方がいいケースは無い と考えてもいいでしょう。

removeProp()を実行するとその後動かなくなります(Chrome37。IE11は問題ない)。そもそもElementオブジェクトの プロパティを削除するなど、JavaScriptの操作では通常行わないため、 存在意義がよく分かりません。なくていい、危険なメソッドといえます。 removeProp()は使わないようにしましょう。

※Chrome38で調査。このページはバージョンを一つ一つ手作業で確認しながら情報を書き留めました。 もしかしたら確認ミス等があるかもしれません。事実と異なる点を見つけた際にはその部分を教えていただきたいです。よろしくお願いします。


jQuery propとattrに戻る

ちょこっとアンケート&メッセージ

このページに関するちょっとした感想または、要望、バグ・間違いの指摘などは、下記の送信欄からお送りください。 質問・その他お問合せなど、返信をご希望の方は「こちらのページ」からメッセージをお送りください。

「このページはお役に立ちましたか?」のアンケートとメッセージのどちらか一方でかまいません (両方書いていただけるとよりうれしいです)。お気軽にご利用ください (感想・どんな用途で使用したかなどをいただけると作成・運営の励みになります!)


このページはお役に立ちましたか?