- のどれを知りたいだけでclick()
、現在、ユーザーのマウスクリックをキャッチするための推奨される方法はありますかlive()
?on()
live()
これはDOMの大部分をスキャンすると信じているので、アウトだと思います。
ありがとうございました。
- のどれを知りたいだけでclick()
、現在、ユーザーのマウスクリックをキャッチするための推奨される方法はありますかlive()
?on()
live()
これはDOMの大部分をスキャンすると信じているので、アウトだと思います。
ありがとうございました。
jquery ドキュメントから:
jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on() を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも .delegate() を使用する必要があります。このメソッドは、デリゲートされたイベント ハンドラーをページのドキュメント要素にアタッチする手段を提供します。これにより、コンテンツがページに動的に追加されるときのイベント ハンドラーの使用が簡素化されます。詳細については、.on() メソッドの直接イベントと委任イベントの説明を参照してください。
.on() メソッドは、jQuery オブジェクトで現在選択されている要素のセットにイベント ハンドラーをアタッチします。jQuery 1.7 以降、.on() メソッドは、イベント ハンドラーをアタッチするために必要なすべての機能を提供します。
For earlier versions, the .bind() method is used for attaching an event handler directly to elements.
TLDR: 常に使用しon()
、決して使用しないlive()
ただし、jQuery 1.9 はライブ機能をサポートしていません。代わりに「on」を使用する必要があります。
live()
.bind()
メソッドは非推奨です。live()
も削除されましたが、他の 2 つはまったく異なる 2 つのタイプのイベント ハンドラーです。
.click()
標準のイベントハンドラです
.click(function() {
//Applies to DOM already present
});
.on()
イベント委任が必要な場合に使用されます。これは従来bind()
のdelegate()
.on('click', function() {
//Delegates to each element is DOM as it manipulated or generated
});
TL;DR:live
非推奨でbind
あり、置き換えられています。任意のイベントをバインドするための推奨される方法であり、delegate
問題はありませんが、少し制限されています。on
click
$(selector).live("click", ...)
は 1.7 以降非推奨、1.9 以降 jQuery から削除、柔軟性がない (常に にバインドdocument
)、非常に非効率的 (最初に要素を見つけてから選択を破棄し、代わりにセレクターを使用)、セレクターを jquery オブジェクトに格納する必要があり、一般的に悪いです。
$(document).on("click", selector, ...)
は の文字通りの置き換えですlive
が、欠点はありません。これは、jQuery の do-everything イベント バインディング関数です。どこにでも何でもバインドしたり、何かに委譲したりできます: $parent.on(events, [targetSelector,] handler)
. 一度に複数のイベントをバインドすることもできます:.on("keypress paste change", ...)
bind
とdelegate
は の年上のいとこですon
。前者は委任できませんが、後者は委任する必要があります。それらは引数の順序も異なります-on
それを解決するためにここにあります。それらは によって置き換えられましたon
が、廃止されていません (jQuery 1.10 の時点)。古いバージョンの jQuery (1.7 より前) を使用する必要がある場合は、そこにあります。それ以外の場合は、に固執しon
ます。現在の実装は単に にリダイレクトするだけon
です。
click
、mouseOver
、change
およびその他の多くは、 および の二重の義務のエイリアスとして機能on
しtrigger
ます。文字通り - それらの 1 つに分岐する以外に何もしません。それらのほとんどは黎明期から存在し、都合よく簡潔になっています。ただし、委任することはできず、対応するバインド解除メソッドはありません。を使用する場合はoff
、 で補完すると見栄えがしon
ます。優れた特性の 1 つは、ブラウザー間の互換性が約束されていることです。または、少なくとも、クロスブラウザーのサポートの欠如を文書化する場所 (つまりload
、画像用)。私の個人的な好みは、十分on
な場合でも使用することです.click
将来的には「マウスアップ」、「マウスダウン」などの別の方法に簡単に変更できるため、「オン」が推奨される方法です。