jQuery: The Write Less, Do More, JavaScript Library

人気の高いJavaScriptフレームワーク「jQuery」の最新版となるjQuery 1.7が公開された。ダウンロードして利用することもjQuery CDN (http://code.jquery.com/jquery-1.7.jshttp://code.jquery.com/jquery-1.7.min.js)経由で利用することもできる。GoogleおよびMicrosoftも自社のCDNでjQueryを配布している。jQuery 1.7における主な新機能は次のとおり。

  • イベントハンドリングを統合する.on()および.off()の導入。従来であれば.bind()、.unbind()、.delegate()、.undelegate()、.live()、.die()などを使うところだが、jQuery 1.7からは.on()および.off()に置き換えることが可能。1.7以降は従来の記述方法ではなく、.on()および.off()を使うことが推奨されている。
  • イベントデリゲーションの最適化よるパフォーマンスの向上。jQeury 1.6.4比較で2倍以上の高速化が確認されている。
  • IE6、IE7、IE8におけるHTML5サポートの改善。
  • RequireJSやcurl.jsといった非同期モジュール読み込みに対応したローダとの相互接続性の向上。
  • jQuery.Deferredへプログレスハンドラを追加。
  • jQuery.isNumeric()の導入。

コーディングの観点から見ると.on()/.off()の導入が注目点となる。リリースの説明文章には次のような書き換えのサンプルコードが掲載されている。どのような置き換えが可能かわかりやすく参考になる。

$('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');

イベントデリゲーションの高速化も今回のリリースでの注目ポイントとなる。掲載されているグラフによれば、jQuery 1.6.4との比較でどのブラウザも2倍以上の高速化が実現されていることを確認できる。

jQuery 1.6.4およびjQuery 1.7イベントデリゲーション速度比較 - リリース文章より抜粋

jQueryはJavaScriptフレームワークとしてはデファクトスタンダードに近いポジションを獲得している。