昨日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

引数にキーを与える際はキャメルケースにしなくても、ちゃんと動くようです。

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’)としてはいけません。

(さらに…)