最近、jQuery チームは、イベントを DOM にバインドするon
代わりに使用することを推奨し始めました。bind
それらの間に違いがあるかどうかを知りたいのですが、関数を使用する利点は何ですか?また、コード内のすべての をの関数にon
変更するのに適しているかどうかを知りたいですか?bind
on
最近、jQuery チームは、イベントを DOM にバインドするon
代わりに使用することを推奨し始めました。bind
それらの間に違いがあるかどうかを知りたいのですが、関数を使用する利点は何ですか?また、コード内のすべての をの関数にon
変更するのに適しているかどうかを知りたいですか?bind
on
jQuery プロジェクトは、個別のものごとに個別のメソッドを用意するのではなく、より多くの機能をより少ないメソッドに配置する方向に進んでいます。
メソッドbind
とはすべて、メソッドの動作を決定するために異なる型のパラメータを使用する単一の メソッド に置き換えられましlive
た。delegate
on
比較:
$(sel).bind(event, f); = $(sel).on(event, f);
$(sel).live(event, f); = $(document.body).on(event, sel, f);
$(sel).delegate(sel2, event, f) = $(sel).on(event, sel2, f);
を使用している場合live
は、そのメソッドの使用法が少し厄介なので、それを置き換える必要があります。また、このlive
メソッドは body 要素でデリゲートを作成するため、デリゲートをより近いスコープにバインドする必要があります。
bind
使用している場合は、すぐdelegate
に交換しても慌てる必要はありません。on
新しいコードでも編集するコードでもそれを行うことができますが、これらのメソッドは近い将来になくなるわけではありません。
基本的に基本的なユースケースに違いはありません
$( '#elementID' ).bind( 'click', function(){...} );
$( '#elementID' ).on( 'click', function(){...} );
これら2つは機能的に同じです..
.on()
イベント委任も行うため、優先されます。
.on() を追加するアイデアは、イベントをバインドするための複数の関数を用意するのではなく、統一されたイベント API を作成することでした。
.on() は、.bind()、.live()、および .delegate() を置き換えます。
そしてjquery 1.7の時点で...bind
は単なるエイリアスです.on()
On は、現在および将来のイベント ハンドラーをアタッチします。ただし、バインドは、イベントを設定したときにのみイベントを添付します。他の要素が動的に追加された場合、バインドはそれらの要素に対して起動しません。
違いは、イベントをbind
バインドし、イベントon
もバインドできることですが、イベントの委任も管理できます。
http://api.jquery.com/on/#direct-and-delegated-events
これをさらに詳しく確認したい場合は、次のブログ投稿をチェックしてください。
bind
おそらく削除される単なる省略形です。jQuery のソース コードから:
...
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
},
...
ソース コードのイントロを自分で調べて、jQuery がどのように機能するかについて多くのことを見つけることができます。