昨日jQuery1.6が公開されたので、その内容をまとめてみました。
だいたい原文にそってますが、翻訳ではありません。
追記 : data()
の扱いが誤っていたので修正しました。キーをキャメルケースにする必要があるとしていましたが、引数を与えずにマップを得た場合の話で、引数にキーを与えて個別に取得する場合は過去のコードと互換性があります。thanks @GeckoTang !(23:11)
変更点
既存コードに影響がある変更がいくつかあります。
data属性の自動マッピング
ハイフン “-” を含む名前のとき、$element.data()
に引数を与えずに得たマップのキーはキャメルケースに変換されるようになりました。
var $div = $('<div data-abc-xyz="123" />'); var data = $div().data(); alert(data['abc-xyz']); // undefined alert(data['abcXyz']); // 123
引数にキーを与える際はキャメルケースにしなくても、ちゃんと動くようです。
- サンプル : jQuery1.6での$element.data()の扱い
- サンプル : jQuery1.5だと?
prop(), removeProp()とattr()
DOMオブジェクトのプロパティのアクセサが用意され、属性へのアクセスと分離されました。チェックボックスのcheckedの扱いなどに大きな影響がありそうです。(といってもattr()をprop()にするだけですが。)
追記 : この変更は次の1.6.1で撤回されました。1.6.1であれば、既存コードの修正は不要です。記事をご覧ください。 (05/20)
attr()
は利用者の操作によるチェックon/offとは連動せず、純粋にHTMLに記述されたchecked
属性の値を返すようになりました。
またremoveProp()の方は扱いに気をつける必要があります。要はプロパティをdeleteするのですが、この際にアクセサも消えてしまうため、DOMが(?)デフォルトで持っているプロパティを消すと、その後正常に動作しなくなってしまう可能性があります。チェックボックスのチェックを外すのに、絶対に$checkbox.removeProp(‘checked’)としてはいけません。