jQuery 1.3Beta1を使ってみた
jQuery 1.3Beta1のテスト版が数日前に出ていた。
正式版は来月の中旬に出るらしい(?)のだが
その前にBeta版をちょっとだけ試してみることにした。
今回の主な変更
今回の主な変更は、Selector部分とかCSS関連の部分らしい。
Sizzle CSS Selector Engineというのが標準搭載されている。
これを搭載したことにより、速度がかなり速くなったとか?
詳しいことはまだわかっていませんが、ソースを見る限り、
Selector部分はかなり違うものになっていました。
その分、速度などではメリットが増えたのはありますが、
バグなのかコレはどうなのか?というのがいくつかあったので、
それらも含めて現時点でわかたことをまとめてみます。
たぶん増えた機能
これは増えたかな?って機能をあげてみます。
- ・live()
- ・die()
増えた機能であるとは思うのですが、
まだどのように使って良いのかわかっていません(汗)
実験もしてみたのですが、何がどのように動作するのか
現時点ではまったくわからない。
もっと検証してみようと思います。
たぶんなくなったもの
ソースを見る限りなくなったなって思うもの。
- :animated
(animatedはanimateで動作中のものに適応させるフィルター)
SelectorsのBasic Filters部分の:animated
animateしている最中の部分に適応させるためのフィルターだったのですが、
ソースを見る限り、どこにも見当たらなくなっています。
バグじゃなくて、なくなったのだろうと思います。
もしかしたら単にBeta版で入れ忘れているだけで、
正式版には入ってくるかもしれないので、
それは今後の動向次第だと思いますが、現状削除っぽい。
たぶんバグ
きっと正式リリースまでには修正されると思うのですが、
一応1.3b1で気づいたバグを列挙しておきます。
- 1、$('a[@href^="http://"]')はエラー。"@"がダメな様子。$('a[href^="http://"]')はOK。
- 2、$('a[@href^="http://www.hoge"]')はエラーじゃないけどそのセレクタに反映されない。
$('a[href^="http://www."]')まではOK。ドット(.)一つ目まで通る。ドット右から通らない。 - 3、頭から検索一致を探す(^)、$('a[href^="http://"]')は問題ないが、
なぜか[href^="hoge"]とかはエラーじゃないけど適応されない。 - 4、$('a[rel^="#"]')のように、"#"が入ってると適応されない。
ほかにもバグがまだまだ多くあると思われるのですが、
現時点で見つけたのはAttribute Filters部分に関するもがほとんどです。
個人的に使っている頻度が多いものだったりもするので、
結構困る事態になるかなーなんて思っています。
今のところの対処方法
バグフィックスされるかわからないので書いておきます。
1に関してはSizzleの影響らしいとか?単に@をつけなければ問題ない。
2に関してはこれが結構問題。ドット(.)より後ろがあると無効になるので、
.より後ろを含まないようにセレクタを作らなければならない。
なのでURLとか拡張子の場合は、なんとかドットを含まないように作る必要があるようだ。
例えば$('a[href$=".gif"]')が無効になってしまうので、ドットをつけないで
$('a[href$="gif"]')としなければならないようだ。
これは修正されていることを願う。
3,4に関してはyuga.jsのページ内スクロールが動作しなくなったので、
原因を探っているうちにこの二つに気がついた。
"#"が入っていると適応されないし、おまけに"href^="にすると、
「http://」は適応されるのに、それ以外だと適応されない。
なぜ!?というような状態です。
このように、今回大幅な修正があったSelector部分でまだまだバグがある様子。
なので、yuga.jsのように自動的に適応させるようにしているプラグインなどは、
Firebug上でエラーもでないのに適応されないなんてことになる可能性があるので、
今後正式リリースされたら、必ずバグが起きないか
必ずチェックしてからアップデートしたほうがいいでしょう。
XPath風の記法にすると最近のブラウザに入ってるquerySelectorAllメソッドを使って高速化できなくなるので。
そうなのですか!?
それは知らなかったです。
情報ありがとうございます!
バグじゃなくて、もう使えないってことなんですね。