Twitter で、@masaru_b_cl さんが、「jQueryでチェックボックスがチェックされているかどうかを取るのって、 var checked = $("#checkboxid").attr("checked");
しか方法ないのか・・・」と言ってました。
jQuery オブジェクトには .checked()
とかってメソッドがありません。
なので checkbox がチェックされてるかどうかは、通常以下のようにして取得します。
checked = $("#checkboxid").attr("checked"); checked = $("#checkboxid").get(0).checked;
ただ、これだとあまり直感的じゃないですね。
checked = $("#checkboxid").checked();
のようにして、取得できるとカッコイイです。
本当にできないんでしょうか?
実は .checked()
メソッドを jQuery オブジェクトに追加するのは、すごい簡単です。
以下のようにして拡張してやるだけで実装できます。
jQuery.fn.checked = function(){ return jQuery(this).attr('checked'); }
これだけで checked = $("#checkboxid").checked();
ってやってやると、check されてたら true が、check されてなかったら false が、そもそも checked アトリビュートが無い jQuery オブジェクトを指定された時は undifined が返ります。
jQuery 簡単ですね。
XXX.attr(‘checked’);を使うより、 XXX.prop(‘checked’);を使ったほうがよいと思う。
http://api.jquery.com/checked-selector/
XXX.is(‘:checked’)
が標準のやり方かと。
checked = $(“#checkboxid”).is(“:checked”)
はどうでしょう?