0

私は自分のプロジェクトで、矢印キーの押下を検出し、使用していたポイントに到達しました:

$(document).bind('keypress', function(event) {
    alert("Handler for .keypress() called.");
});

調査していて、代わりにこれを使用できることがわかりました:

$(document).keypress(function() {
    alert("Handler for .keypress() called.");
});

私は2番目のものが一番好きです。きれいに見えます。彼らは同じことをしているようですそう...

  • .bind()を使用する理由
  • これらは同じことをしませんか?
4

4 に答える 4

1

.keypress()または他の同様の名前の functionなどは.click()、関数.hover()の省略形です。.on()

于 2013-03-01T16:49:55.267 に答える
1

jQuery ドキュメントはあなたの味方です!

  • .bind()jQuery 1.7 以降を使用している場合は、ここで提案されているように、使用しないでください。
  • .on()jQuery 1.7+ でイベント ハンドラーをアタッチする推奨される方法です。
  • .keypress()多くの「特別な」特定のイベントアタッチャー (ほとんどの場合、通常は呼び出し.on()または.bind()とにかく) の 1 つであり、ドキュメントによると、ブラウザー、ブラウザーのバージョン、およびプラットフォーム間で異なる動作をする可能性があります。

これら 3 つの関数に関する情報を考えると、最善の策は を使用すること.on()です。

于 2013-03-01T16:50:42.880 に答える
1

あなたが与える2つの例実際に同じことをします-どちらもjQuery 1.7の時点でほとんど非推奨です

http://api.jquery.com/bind/から

jQuery 1.7 の時点で、.on() メソッドは、イベント ハンドラーをドキュメントにアタッチするための推奨メソッドです。

イベント ハンドラーをアタッチするこれらの古い方法では、イベント ハンドラーがアタッチされたときに要素が DOM に存在する必要がありました。最近のバージョンで同じことを行うよりスマートな (より効率的なことは言うまでもありません) 方法があり、これは一般に委任と呼ばれます。チェックアウトする必要があります.on()

于 2013-03-01T16:46:41.700 に答える
0

それは主に個人的な好みです。そうです、どちらも同じことを行います...ただし、最近のバージョンのjQueryでは廃止されました

アンドリューがコメントで述べたように、onではなくを使用してくださいbind

on同じ関数を使用して、バインディングの初期化時に存在する場合と存在しない場合がある要素のデリゲート ハンドラーをバインドできるという追加の利点が得られます。

$('#someExistingElement').on('keypress', handler); //normal binding

$('#someExistingElement').on('keypress', '.some-child-element-that-doesnt-exist', handler); //delegate binding

恐ろしいクラス名とIDを許してください...デモ目的のみです:D

于 2013-03-01T16:48:19.190 に答える