私は古いコードを見ています。私は、ajaxで追加される要素には、ライブクエリコードがたくさんあることがわかりました。 jqueryの新しいバージョンではライブクエリが不要になりましたか?誰もが正確にそれが必要ではないバージョンを知っていますか?livequeryは非推奨です
$("#somediv").livequery(function(){
$(this).click(function(){
});
});
私は古いコードを見ています。私は、ajaxで追加される要素には、ライブクエリコードがたくさんあることがわかりました。 jqueryの新しいバージョンではライブクエリが不要になりましたか?誰もが正確にそれが必要ではないバージョンを知っていますか?livequeryは非推奨です
$("#somediv").livequery(function(){
$(this).click(function(){
});
});
livequery
.live()
とは全く異なる概念です。
.live()
メソッドは、イベント委任を使用して、ページの任意の場所で発生するイベントを処理します。
livequery
は、DOM変更が発生したときにハンドラを呼び出します。(jQueryメソッド経由)。
class="some_class"
の要素がDOMに追加される(またはクラスが要素に追加される)場合、最初のハンドラが実行されます。削除されると、2番目の。
$('.some_class').livequery(function() {
// apply a plugin to the element
$(this).somePlugin();
}, function() {
// clean up after the element was removed
});
はlivequery
のために少し実際必要があるはずですが、あなたはDOMの変化に対応する必要があり、それらの変更を引き起こしているのjQueryを制御することはできませんというまれなケースでは、それが役立つことがあります。
@レイノス:私はそれを醜いと呼んでいませんが、私はほとんどいつも別のアプローチを提案しています。 – user113716
これは_time period_ごとにdomを繰り返して変更を探します。基本的にDOMをポーリングし、血まみれの要素をすべてチェックし、何かが変更されたかどうかを確認します。信じられないほど計算量が多く、ちょっとばかげて、domの突然変異の事象を検出する機能もありません。 – Raynos
@Raynos:私はちょうどソースを見て、簡単なテストを行い、 'livequery'の仕組みの説明は正しくありません。実際には、jQueryメソッドを元のコードを呼び出す前に内部コードを呼び出す関数でラップします。したがって、メソッドが呼び出されると、提供された元のセレクタに基づいてDOM選択が実行され、新しい要素が見つかった場合にコールバックが適用されます。だから、すべてのDOM要素のすべての時間帯にはポーリングがありません。 – user113716
on()を使用し、親または身体にイベントを添付する必要があります。例:
$('#obj').livequery('click', function() { ... });
$('#obj').livequery(function() { ... });
はDOMNodeInsertedは、IE9 +
はい、livequeryが死んでいることを
ノートになります。それはまた、反パターンです – Raynos
@Raynos何がそれを置き換えますか?現在のところ、その目的に役立つ例は見つかりませんでした。 .onはイベント用であり、近いjqueryイベントはDOMNodeInsertedであり、これは広いブラウザサポートを持たない。 – AaronLS
@AaronLSイベントの委任が問題を解決します。 'DOMNodeInserted'が必要な場合は、複雑なテンプレートシステムを構築するか、それを間違って実行してください。前者が単純なテンプレートシステムを構築するのであれば、代わりに – Raynos