6

このページのドキュメントを調べています。このような例があります...

$("p").on("click", function(){
alert( $(this).text() );
});

$("form").on("submit", false)

$("form").on("submit", function(event) {
  event.preventDefault();
});

なぜこれが優れているのか、これとどのように違うのか...

$("p").click(function(){
alert( $(this).text() );
});

$("form").submit(false);

$("form").submit(function(event) {
  event.preventDefault();
});

最後の質問として、なぜあなたはこれをしたいのですか...

$("form").on("submit", function(event) {
  event.stopPropagation();
});

それ以外の ...

  $("form").submit(function(event) {
      event.preventDefault();
  });
4

4 に答える 4

7

jQuery .bind()vs .live()vs .delegate()vs .on()の違い

この記事の最大のポイントは...

.bind()メソッドを使用すると、セレクターで一致するすべてのアイテムに同じイベントハンドラーがアタッチされるため、非常にコストがかかります。

.live()メソッドは非推奨であり、多くの問題があるため、使用を中止する必要があります。

.delegate()メソッドは、パフォーマンスを処理し、動的に追加された要素に反応するときに、多くの「コストパフォーマンス」を提供します。

新しい.on()メソッドは、ほとんどの場合、呼び出し方法に応じて.bind()、. live()、または.delegate()を模倣できるシンタックスシュガーです。

新しい方向は、新しい.onメソッドを使用することです。構文に慣れて、すべてのjQuery1.7以降のプロジェクトで使用を開始してください。

于 2012-05-31T15:36:22.803 に答える
5

など.onの特定のハンドラーの代わりに使用する場合、いくつかの違いがあります.click

  1. 目的の.on()メソッドは、イベントハンドラーを1つの構文でアタッチするために必要なすべての機能を提供することです。.onbunch .on.submitまたはの代わりにを使用して、一貫性のある構文を記述できます.click
  2. .onイベントの委任をサポートしますが、特定のハンドラー(例:)はサポート.clickしません。詳細については、ここから直接および委任されたイベントのセクションを参照してください
  3. を使用し.onて、次のような複数のイベントハンドラーをバインドできます.on('click dblclick')
  4. .onを使用すると、。のような名前空間イベントをバインドできます.on('click.myClick')。詳細については、ここからイベント名と名前空間のセクションを参照してください
  5. 内部的に.clickトリガー.onされるため、基本的に余分な関数呼び出しを回避できます。- 。クリックソースコード

そして今、評決、

$( "form")。on( "submit"、function(event){event.preventDefault();});

なぜこれが優れているのか、これとどのように違うのか

$( "form")。submit(function(event){event.preventDefault();});

$("form").on(上記の理由1と5の方が良いです

于 2012-05-31T15:40:35.843 に答える
3

、、などのメソッドはclicksubmitそれぞれontrigger同等のメソッドの単なる便利なメソッドです。

コードの可読性が向上すると信じる場合にのみ使用します。ただし、一般的に、メソッドontriggerメソッドはコードの意図をより明確に表現していることがわかります。

于 2012-05-31T15:37:01.533 に答える
2
  1. 委任を使用$.on()していない場合でも、コードに使い慣れた一貫性のある構文が導入されるため、を使用することをお勧めします。
  2. さらに、jQueryソースで頻繁に使用されます。つまり、のようなメソッドを呼び出すときに仲介者を排除できます$.bind()
  3. $.submit()またはを使用$.click()してハンドラーを割り当てると、それらのイベントをトリガーするためにも使用されるため、混乱を招きます。

次に、イベント委任の追加の利点があります。これにより、1つに追加するだけでよい場合に、何百もの要素にイベントを追加する必要がなくなります。100個の<td>要素があり、クリックするとその内容を通知したいとします。あなたはこれを行うことができます:

$("td").click(function(){
    alert( $(this).text() );
});

しかし、これで100個の新しいイベントハンドラーが追加されました。パフォーマンスに本当に悪い。を使用すると、、$.on()だけにバインドし、<table>すべてのイベントを調べて、何がそれらを発生させたかを確認できます。だった場合は、それに<td>応じて対応できます。

$("table").on("click", "td", function(){
    alert( $(this).text() );
});

出来上がり、1つのイベントのみがバインドされ、1つのイベントハンドラーのみがアプリケーションに導入されました。パフォーマンスが大幅に向上します。

$.on()これが、切り札$.click()や日が来る最大の理由の1つです$.submit()

于 2012-05-31T15:36:43.223 に答える