jQuery1.3リリース間近!

jQuery1.3 beta 2が公開されています。
昨年末のbeta 1に続き短い間隔でのリリースとなり、1/14の正式リリースに向けて追い込みとなりました。

年末年始の忙しさにかまけてbeta 1公開時にも書かなかったので、ここで主な変更点を。

Selectorエンジンにsizzleを搭載

いきなり大きな変更ですね。遂に、といったところです。
sizzleはjQueryの作者でもあるJohnResig氏が作った、新しいセレクターエンジン。
CSS3書式にも対応しながら、jQueryのものと比べてもかなりの高速化がされています。

主なセレクターエンジンのベンチマーク

元々、以前のバージョンにsizzleを入れることも可能だったので、今回は「正式に」搭載しますということですね。
ちなみに、自分が把握しているjQueryセレクターとの違いは次のようなものです。

":animated"が使えない

これは、jQueryの独自拡張であるために、意図的にsizzleからは外したのだと思います。
(sizzleはjQueryに実装することだけを目的としない、汎用エンジンのため)
今後、jQuery仕様として実装されるのかは不明です。

W3Cの(X)HTML DTD上に無いattributeにはヒットしない

おかげで、jGlycyは全く使えなくなります:-(
せめてXHTMLに対してだけでも、Namespaceがちゃんと実装されればな…とも思いますが。

attributeの指定に@が不要に

これは正式にはbeta 2から。
今まで[@attr=value]という形で指定していましたが、これが[attr=value]になります。

DOM操作系の関数を書き直し

セレクター同様に大幅に書き直されているようですが、こちらは仕様変更は特に発表されておらず、おそらくは速度向上のためのリライトのようです。
コードは確認していませんが、FF3.1などから実装されるECMA Scriptの新しい勧告分に対応するなどしているのでは。

.offset()関数

詳しくはわかりませんが、bodyOffsetなどに置き換えられているようです。

EventのNamespaces処理

以前より気にしている箇所ですが、今回リライトされたようです。
詳細は不明。

EventのBubbling処理

jQueryで設定されるイベントも、バブリングされるようになりました。
これによって、状況によっては今まで無かったタイミングでのイベント発生が起きる可能性があります。
(詳しくはここでは記述しませんが、JavaScriptの基本的なイベントに関する知識なのであちこちで説明されていると思います。「イベント伝播」などで調べてみて下さい)

これを従来通りの動作にするためには、各イベント処理を次のような条件式で囲ってやります。

if (this == event.target){
  // 実際の処理
}

しかし、全てのコードに手を入れるのも現実的かどうかは怪しく、かなり影響は大きそうです。

beta版のテストに協力する場合には、コードはminifyせずにそのまま取り込み(エラー発生時に箇所を特定しやすくするため)、bug trackerで報告してくれるよう、呼びかけられています。

最終更新: Y/m/d H:i