4

最近、jQuery チームは、イベントを DOM にバインドするon代わりに使用することを推奨し始めました。bind

それらの間に違いがあるかどうかを知りたいのですが、関数を使用する利点は何ですか?また、コード内のすべての をの関数にon変更するのに適しているかどうかを知りたいですか?bindon

4

5 に答える 5

11

jQuery プロジェクトは、個別のものごとに個別のメソッドを用意するのではなく、より多くの機能をより少ないメソッドに配置する方向に進んでいます。

メソッドbindとはすべて、メソッドの動作を決定するために異なる型のパラメータを使用する単一の メソッド に置き換えられましliveた。delegateon

比較:

$(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新しいコードでも編集するコードでもそれを行うことができますが、これらのメソッドは近い将来になくなるわけではありません。

于 2013-04-18T20:07:46.410 に答える
2

基本的に基本的なユースケースに違いはありません

 $( '#elementID' ).bind( 'click', function(){...} );
 $( '#elementID' ).on( 'click', function(){...} );

これら2つは機能的に同じです..

.on()イベント委任も行うため、優先されます。

.on() を追加するアイデアは、イベントをバインドするための複数の関数を用意するのではなく、統一されたイベント API を作成することでした。

.on() は、.bind()、.live()、および .delegate() を置き換えます。

そしてjquery 1.7の時点で...bindは単なるエイリアスです.on()

于 2013-04-18T20:03:28.667 に答える
2

On は、現在および将来のイベント ハンドラーをアタッチします。ただし、バインドは、イベントを設定したときにのみイベントを添付します。他の要素が動的に追加された場合、バインドはそれらの要素に対して起動しません。

于 2013-04-18T20:04:26.600 に答える
1

違いは、イベントをbindバインドし、イベントonもバインドできることですが、イベントの委任も管理できます。

http://api.jquery.com/on/#direct-and-delegated-events

これをさらに詳しく確認したい場合は、次のブログ投稿をチェックしてください。

于 2013-04-18T20:04:47.473 に答える
1

bindおそらく削除される単なる省略形です。jQuery のソース コードから:

...

bind: function( types, data, fn ) {
    return this.on( types, null, data, fn );
},

...

ソース コードのイントロを自分で調べて、jQuery がどのように機能するかについて多くのことを見つけることができます。

于 2013-04-18T20:02:46.023 に答える