0

多くの要素が動的に追加/削除される小さな ajax アプリで問題が発生しました。On() を使用すると、関数に追加するだけでなく、現在のイベントが置き換えられると考えたため、ajax 呼び出しが複数回行われたことがわかりました。

そのため、イベントが必要になるたびに off() を使い始めました。恐ろしいです。stopImmediatePropagation() を発見したところ、同じ効果があるようですが、パフォーマンスと読みやすさが向上しています。

たくさんのチュートリアルを見ましたが、古い/削除されたものがたくさんあります。

jQuery でイベントを使用する際のベスト プラクティスを実行する方法を探しています。ありがとう

4

2 に答える 2

2

この場合、イベント委任を使用します。通常、jQuery でイベントをバインドするときは、それを特定の要素にバインドしますが、実行時に (ajax などを介して) 要素が追加されることがわかっている場合は、イベント委任を使用できます。イベント委任は、バインド時ではなく、イベントが発生したときにセレクターを実行します。

イベントをバインドするときは、セレクターを設定するだけです。たとえば、

$(window).on('click', 'button.fun', function() {
    alert('how fun');
});

上記のコードでは、button.fun をクリックするたびに、how fun というテキストとともにアラートがポップアップ表示されます。これらのボタンは自由に追加/削除できます。ただし、window必要な場合を除き、直接バインドしないでください。コンテナーが具体的であるほど良いです。

stopImmediatePropagationイベントのディスパッチを停止するように言っているだけですが、すべてのイベントはまだバインドされているため、メモリの無駄などです。

于 2013-09-30T15:43:16.870 に答える
0

ベスト プラクティスは、適用可能なすべてのタグに対してイベントを定義し、それ以外の場所には定義しないことです。この目的のために、イベントがアクティブになるすべてのタグを定義するセレクターをできるだけ具体的に使用する必要があります。より多くのタグが同じイベントまたは同じスタイルを共有する必要がある場合は、共通の CSS クラスを持つことができます。

于 2013-09-30T21:10:47.753 に答える