昔は、呼び出しを連鎖させlive()
て大成功を収めていました。
$(".something")
.live("click", function(e) { ... })
.live("change", function(e) { ... })
.live("submit", function(e) { ... });
最近ではlive()
、bind()
とdelegate()
はピカピカの新しい に取って代わられましたon()
。
私は単純に置き換えてみましたがlive()
、on()
これは明らかだと思われます:
$(".something")
.on("click", function(e) { ... })
.on("change", function(e) { ... })
.on("submit", function(e) { ... });
ただし、どのように機能するかを考えると、これが機能しないことはほぼ明らかですon()
。これはhttp://api.jquery.com/on/から:
「イベント ハンドラーは、現在選択されている要素にのみバインドされます。コードが .on() を呼び出す時点で、イベント ハンドラーはページ上に存在する必要があります。」
jQuery のドキュメントによると、ライブ イベントを処理するには、バインドしdocument
て委任する必要があります。.something
残念ながら、これは、.document
上記のものを複製したい場合、デリゲート セレクター ( ) を繰り返すことになることを意味しon()
ます。
$(document)
.on("click", ".something", function(e) { ... })
.on("change", ".something", function(e) { ... })
.on("submit", ".something", function(e) { ... });
これは期待どおりに機能しますが、 を使用するように、より明確に連鎖できるようになりたいと思っていますlive()
。何か不足していますか?