技術情報:困ったこと jQueryによるラジオボタンの値取得

なんか最近困ったことばかりのような。
さてjQueryといえば近年のJSライブラリの定番で、
Aptanaにも標準搭載、.jsファイルはおろか
コードアシスト用のドキュメントも内蔵されているという徹底ぶり。



だが・・・個人的にはあまり好きではない。
理由は単純、$()というのはdocument.getElementById()のエイリアス
あるべきだと思うからだ。
というのもprototypeもまだまだ根強い人気があるなか、エイリアス名が
かぶるというのはコーディングする上で非常に厄介な問題であるし、
prototypeのほうが先に流行ったからだ。
もし複数名のJSエンジニアが集まれば喧嘩になること間違いなし。
というのはおいておいて、単にjQuery("CSSセレクタ")というのが気に食わないだけだったり。


なので、自前のユーティリティ群には


//jQueryをj$でアクセスできるように
var j$;
if(typeof jQuery === "function"){
j$ = jQuery;
}
else{
delete j$;
}


なんて書いている。





さて本題だが、多くのJSエンジニアがぶつかるであろう
ラジオボタンの値取得について。
通常ラジオボタンといえば、同じnameでvalueが違うものを
複数個配置することが多いと思うが、
document.formsから辿ろうとするとテキストボックスなどと違い
ラジオボタンに指定したname属性は配列になっている。



たとえば以下のラジオボタンがあるとする。



<form name="form1">
<input type="radio" name="rbtest" value="0" />0
<input type="radio" name="rbtest" value="1" checked="checked"/>1
</form>


するとdocument.forms["form1"]["rbtest"].lengthは2となり、
document.forms["form1"]["rbtest"][0]と
document.forms["form1"]["rbtest"][1]をループなりして
checked属性の値をいちいち見なければならない。
なんとも不親切な仕様である。



そこで簡単に取得する方法があったはずだと思い
googleで検索したところ、どうやらjQueryを使えば簡単に取得できるらしい。
使い方は簡単。



jQuery("input:radio[@name=rbtest]:checked").val()


とすることにより取得できるらしいのだ。
しかし、早速問題が発生。
確かに画面を表示したときやinnerHTMLを操作した直後の値が取れることは確認できたが、
マウスで別の値をクリックした後に上記のコードを実行しても
値が変わっていないことがあるようなのだ。


はじめは自分の書いたコードのバグかとも思ったが、
もしかしたらブラウザのバグなのだろうか。
現象はIE8で発生しているので、何か情報をお持ちの方は
是非教えていただきたい。