jQuery 1.7、1.8 で非推奨になったイベントのメソッドと Ajax 関連のメソッドとイベント
- jQuery: 大半のブラウザにおいて ready は DOMContentLoaded を指す
- Function.prototype.apply、bind と $.proxy の比較
- event.originalEvent、jQuery.event.props.push、jQuery.event.fixHooks について
- 条件分岐からメソッドチェーンやマップによるコールバックに
- jQuery 1.7、1.8 で非推奨になったイベントのメソッドと Ajax 関連のメソッドとイベント
- メソッドチェーンもしくはプロパティ表記を使って複数のイベントハンドラを指定する
- ホーバーで削除ボタンの表示をコントロールする
- mouseenter と mouseover のちがい
- jQuery のイベントメソッドのなかでの return false と e.preventDefault() のちがい
9月1日追記: on メソッドについて訂正 8月29日追記: イベントメソッドがタイトルから抜け落ちていたのと Ajax メソッドと混同していたので、訂正しました。
jQuery 1.7、1.8 でさまざまなイベントメソッドおよび Ajax メソッドが非推奨になったので、頭の整理のために書き出しました。情報源は「jQuery 1.8の更新内容をまとめたよ。」の記事と jQuery 公式サイトの「deprecated」です。
まずはイベントとイベントメソッドについて。
.bind、.unbind、.live、.die、.delegate、.undelegate - .on、.off に置き換える .bind('ready', fn) - $(fn) もしくは $.ready(fn) に置き換える .load、.unload、.error - .on("load")、.on("unload")、.on("error") に置き換える hover 疑似イベント - mouseenter と mouseleave イベントの組に置き換えるか .hover メソッドもしくは .mouseenter と .mouseleave メソッドの組に置き換える
次は Ajax イベントについて。この記事を書いている時点では .ajax メソッド以外の .get、.post、getJSON メソッドの API ドキュメントには.done、.fail、always メソッドが推奨されるようになったことが反映されていません。
ajax の .success、.error、.complete - .done、.fail、always に置き換える
解説を追記します。
.bind および .on メソッドはオブジェクトを引数にして複数のイベントとコールバックをまとめてセットアップすることができますが、.on メソッドは次のようにセレクタとデータをオプションとして渡すことができるようになりました。
.bind( events ) .on( events-map [, selector] [, data] )
イベントマップはイベントをキー、コールバックを値とするオブジェクトです。
$(selector) .on( { event1: function() {}, event2: function() {}, event3: function() {} } );
比較のためにメソッドチェーンで並べるやりかたを書いておきます。
$(selector) .on("event1", function() {}) .on("event2", function() {}) .on("event3", function() {});
複数のイベントで同じコールバックを共有するのであれば、イベントをスペースで区切って指定する。
$(selector).("event1 event2 event3", function() { // 共通の処理 } );
次に Ajax メソッドについてです。従来、成功、失敗、完了時のコールバックは次のように指定してました。
$.ajax({ type: "POST", url: url, data: data, dataType: dataType, success: successCallback, error: errorCallback, complete: completeCallback });
jQuery 1.5 で Deferred オブジェクトが導入され、コールバックは次のようにメソッドチェーンで追加できるようになりました。
$.ajax({ type: "POST", url: url, data: data, dataType: dataType }) .done( doneCallbacks ) .fail( failCallbacks ) .always( alwaysCallbacks );
jQuery 1.8 で非推奨になったメソッド群を使った書き方は次のようなものでした。
$.ajax({ type: "POST", url: url, data: data, dataType: dataType }) .success( successCallback ) .error( errorCallback ) .complete( completeCallback );
.post メソッドにコールバックを渡す方法については「jQuery による POST リクエストとコールバックの渡し方について」 の記事で検討したのでご興味のある方はご参照ください。
Deferred と Promise に関する包括的な解説は次の記事が読み応えがあります。