jQuery 1.7
jQuery 1.7が公開されています。本ブログ内のjQuery 1.7.1についての記事はこちら。
1.6の時のような互換性を損なうバージョンアップは今のところなく、パフォーマンス改善、機能の統合、外部ライブラリとの共存の改善、等が主なリリース内容でした。
まず目についたのがtoggleによるアニメーションでstop()が正しく動くようになったようです。
.stop() - jQuery API
Toggling Animations
As of jQuery 1.7, stopping a toggled animation prematurely with .stop() will trigger jQuery's internal effects tracking. In previous versions, calling the .stop() method before a toggled animation was completed would cause the animation to lose track of its state (if jumpToEnd was false). Any subsequent animations would start at a new "half-way" state, sometimes resulting in the element disappearing. To observe the new behavior, see the final example below.
適当訳
トグルによるアニメーション
jQuery 1.7にて、トグルによるアニメーションを.stop()で完了前に止めた場合、jQuery内部のエフェクト追跡を起動させるようになりました。以前のバージョンでは.stop()メソッドをトグルによるアニメーションが完了する前に呼び出すと、(jumpToEndがfalseの場合に)そのアニメーションが状態を見失う結果になっていました。後続のアニメーションが新しい"中間地点"から始まることで、時々要素が消えることもありました。新しい動きを確認するには、下記にある最後の例を見て下さい。
1.6.4まではアニメーションに対して、停止、再生を繰り返すとうまく動きませんでした。
トリッキーな方法でできていたのかもしれませんが、私は停止させることなく放置していました。
ステータスを見失っていたわけですね。1.7からは正しく管理できるようになってるようなので、これからはアニメーションの再開がスムーズにできるようになるんでしょう!
上記URLにあった.stop()のExampleをjQuery 1.6.4で動かしてみたところ、クリック!クリック!した結果、最終的には高さが0(上下のborderだけが残った)のdivになって、それ以上動かなくなりました。
1.7だときれいにアニメーションします!
on/off
イベントのバインディング(*)がon/offで統一され、今後そちらを推奨していくとのことです。
以前のattr/propのような互換性の問題が出ないといいですね。数日使ってますが、大丈夫そうです。
こう書き換えましょう的なもの:
$('a').bind('click', myHandler); $('a').on('click', myHandler); $('form').bind('submit', { val: 42 }, fn); $('form').on('submit', { val: 42 }, fn); $(window).unbind('scroll.myPlugin'); $(window).off('scroll.myPlugin'); $('.comment').delegate('a.add', 'click', addNew); $('.comment').on('click', 'a.add', addNew); $('.dialog').undelegate('a', 'click.myDlg'); $('.dialog').off('click.myDlg', 'a'); $('a').live('click', fn); $(document).on('click', 'a', fn); $('a').die('click'); $(document).off('click', 'a');
AMDサポート
以前のバージョンのjQueryは、モジュール化されたJavaScriptとの相性が以前が悪かったみたいです。
AMD(Asynchronous Module Definition) API互換のライブラリとはうまく共存できるようになったようです。
と書いてても、現時点であまり興味が無い分野なのですが、CommonJSと共に今後広まりそうな技術な予感がします。
jQuery.Deferred
途中経過が確認できるようになったとのこと。
新しく追加になったjQuery.Callbacksにて実装されたようです。
success/failureのchainはいいのですが、jsdeferredのような重たい処理の間に別のイベントを割り込ませられる(DoEventsのような)非同期処理は相変わらずできないんでしょうかね。
バージョンアップする度に、確認してるんですが、結局jsdeferredに戻ってます。
delegateのパフォーマンス改善
そんなに悪いと感じたことはありませんでしたが、これは地味にいいかも。
HTML5のサポート
以前innerShivを使用していた人は、もう使わなくても大丈夫です。ie8以下に対してhtml5shiv(html5.js)はまだ必要のようです。
jQuery.isNumeric()が追加、jQuery.isNaN()が廃止
isNumeric便利だから作ったぉ!
jQuery.isNaNはJavaScript標準のisNaNと意味が違ったから削除したぉ!
とのことです。
jQuery.isNaN()ってそもそも非公式(ドキュメント化されてないAPI)なので使ったことない人がほとんどでしょうね。
- 関連記事