SOFTELメモ

Softel Inc.

【Javascript】jqueryでチェックされているチェックボックスを取得したい

間違ってはいないと思うけどこちらの方がおすすめみたいです

問題

jqueryでチェックされているチェックボックスを取得したい

答え

$('input:checkbox:checked')

$("input[type='checkbox'][checked='checked']")ではだめなの?

ブラウザによって結果が違ってしまうのでやめたほうがよい。

例のごとくIEだけが仲間はずれ。IEだけがelement.querySelector、element.querySelectorAllをサポートしていないため、内部で別のセレクタエンジンで処理される場合がある。

$("input[type='checkbox']")までは問題ない。

checked属性がかかわってくると、IEなら$("input[type='checkbox'][checked='checked']")はダメで、$("input[type='checkbox'][checked=true]")なら取得できたり、IE以外だと$("input[type='checkbox'][checked='checked']")で読み込み当時の状況(チェックボックスの値が変化する前の状態)が取得できたり、まあ面倒なことになります。

$('input:checkbox:checked')を使えば、内部ではelement.checked === true を見て判断をしてくれるので、どのブラウザでも同じ結果を得られます。

ラジオボタンならこうする

$('input:radio:checked')

関連するメモ

コメント