2013年8月16日金曜日

jQuery mobile のcheckboxでcheckedが固定しちゃうバグらしきもの

jQuery mobile で、 <input type='checkbox' id='check'> なタグに



jQuery('#check').click(function(){
 alert(jQuery('#check').attr('checked'));
});

とすると、そのチェックボックスをクリックするたびに
「checked」「undefined」が交互に返ってきます。

ですが、jQuery mobile のAPIリファレンスにあるように、
スクリプトで初期状態でチェックを入れちゃうと…



jQuery('#check').attr('checked',true).checkboxradio('refresh');
jQuery('#check').click(function(){
 alert(jQuery('#check').attr('checked'));
});

このような記述をすると、クリックしても毎回「checked」が
返ってくるようになってしまいます。
見た目のオンオフはちゃんと切り替わってるのですけどね。

なお、jQuery 1.9.1 , jQuery mobile 1.3.2 です。
なんだかバグくさい挙動なんですが、これ仕様なんですかね?



jQuery('#check').attr('checked',true).checkboxradio('refresh');
jQuery('#check').click(function(){
 alert(jQuery('#check').next().find(":eq(0) :eq(1)").hasClass("ui-icon-checkbox-on"));
});

しょうがないので、このように、jQuery mobile が構成しているアイコンがON用かどうかで
判断するようにしたら、しっかり「true」「false」が返ってくるようになりました。
バッドノウハウな感じで嫌ですね。
公式APIリファレンスさん、正しいチェック状態の取得方法を書いててくださいよ~。

0 件のコメント:

コメントを投稿