2013年4月25日木曜日

jQuery-2.0.0; <input type="checkbox">のcheckedの取得と操作

jQuery-1.7系で実装していたプロジェクトをjQuery-2.0.0にしたら発症したバグとその解消法を備忘録として残す。

発生したバグ: 
<input type="checkbox">に対するcheckedの取得と操作が行なわれなくなった。
原因: 
$('#hoge input[type=checkbox]').attr('checked')
とattrによりcheckedの取得や操作を実装してあった。

解消: 
$('#hoge input[type=checkbox]').prop('checked')
attrからpropへ切り替えた。

良い副作用として、attrでは"checked"なる文字列で属性の有無または値がfalseと見做せるかをユーザーコードで確認する必要があったが、propではそもそもbooleanで値を取得、設定できるのでコードの可読性や堅牢性に対する注意にコストを割かなくてもよくなる。

参考:
それぞれに今回の例の様に<input type="checkbox">に対してcheckboxを扱う状況におけるTipsが掲載されています。

0 件のコメント:

コメントを投稿