2この記事はだいぶ前に書かれたものなので情報が古いかもしれませんこの記事を三行にまとめるとjqueryでチェックボックスの値を取りたいんですけど$(element).attr('checked')は取れたり取れなかったりする.prop()を使うとだけ覚えとけばあとは何の問題もないタイトルの通り、ほんとーに些細なお話なんですけど......でもそれを長々と書く。それがあかつきのお宿クオリティー。僕は、チェックボックスのチェックがついてるか判定して何かしらの処理を行なうとき、その判定方法を、つまり値を取得する方法を、何でかいっつも忘れちゃうんですよ。そんなに難しい話ではないはずなんですけどね。自分の購入している漫画の最新巻がいつ出るかチェックするよりも、はるかに簡単なはずなんですけどね。いや、でも考えたら僕、自分が集めてる漫画の最新巻が出る日も、全く覚えてないわ。本屋に行ったりAmazonを徘徊してるときにうっかり発見しないと、いつまで経っても気づかない人だったわ。ダメ男じゃんorz僕がいつも忘れちゃうのは、jqueryを使って判定を行なう場合です。ほんっとうに何度やっても覚えないんで、ここらでそろそろ、自分をこらしめておこうと思います。いつまでも同じ過ちを繰り返してんjjavascriptで判定する場合javascriptでっていうのは、jqueryとか使わずにチェック判定を行なうっていう意味なんですが、そっちは覚えてるんですよ。}}</script>例えばこれなら、チェックがついたときだけアラートが出ます。チェックをはずしてもっかいつけたら、またアラートが出る。これだと、デフォルトでチェックがついてるときにはアラートが出ないですね。一度はずして再度つけたときに初めてアラートが出る。document.getElementById('check');judge(obj);</script>jqueryで判定する場合じゃあちょっとjqueryに手伝ってもらって、同じような処理を書いてみましょう。}});$('#check').judge();</script>こういう書き方がベストかは分かりませんが、やってることは一緒です。ページ読み込み時に一度判定を行なって、さらにoneってのを使って、changeイベントで同じ判定処理を行なうようにしている。これだと、いつまで経ってもアラートが出ない。実際に「this.checked」をアラートしてみると常に「undefined」が返って来てしまう。判定できるパターンはどれだ?たぶん、僕がいつまで経っても覚えられない理由は、判定ができる場合とできない場合、両方ともいくつかパターンがあるせいじゃないかと。その辺が何かややこしくて、いつも混同してしまうのではないかと。そんな風に思う今日この頃です。判定できるパターンと判定できないパターンを、いくつか洗い出してみましょう。//OKパターン$(element).get(0).checked;$(element).is(':checked');$(element).prop('checked');//NGパターン$(element).checked;$(element).attr('checked');上の3つがOKなパターン。チェックがついてるとtrueが返ってくるし、そうじゃなければfalseが返ってくるから、処理を分けられる。「$(element).attr(‘checked’)」の方ね。判定できてねえ」ってなっちゃうのよ。できるときもあるから困る何がややこしいって、「$(element).attr(‘checked’)」は、チェックがついているか判定できるときもあるってのが、ややこしい。一つは、ページ読み込み時。changeイベントで判定するときは無理なんだけど、ページ読み込み時だけは、チェックがついてるかどうか判定できる。/><script>alert($('#check1').attr('checked'));alert($('#check2').attr('checked'));</script>//アラートの結果#check1・・・checked#check2・・・undefinedこれだと、デフォルトでchecked属性がついてる方は、checkedが返ってくる。ついてない方はundefinedが返ってくる。この場合、changeイベントでどんなにチェックを切り替えても、常にcheck1の方はcheckedが返ってくるし、check2の方はundefinedが返ってくるんですよ。結局は判定ができてないってことになる。チェックがついたら、あるいははずれたら何らかの処理を行なうってことができないわけですね。