2011-10-25 5 views
5

検索では私の質問に対する解決策が明らかにされていないため、ここで質問しています。私はlive()と組み合わせてlivequery()をしばらく使っています。一般的には、クリックのような既知のイベントに対してはlive()を使用しますが、特定のセレクタでトリガーするためにlivequeryを使用し、プラグインを適用します。ライブ()/デリゲート()または私が知らないいくつかの他のクールなjQueryの機能を使用して同じことを行う方法がある場合たとえば...livequeryをlive/delegate /に変換していますか?

$('#childDomains').livequery(function() { 
    var element = $(this); 
    element.jqGrid({ 
    // plugin initialization here 
    }); 
}); 

は、私は思ったんだけど。私は依存関係の負荷を軽減しようとしています。私はlivequeryが02-2010年以降に更新されていないことに気付きました。

更新:私は十分に明確ではないと思います。 jqGridを使用してTABLE要素をjqGrid Ajaxデータグリッドに変換するページがあります。これが発生するための実際のクリックイベントはありません。このテーブルがあるページはajax経由でロードされ、DOMが$( "#childDomains")を見ると、その要素にjqGridプラグインを適用する必要があります。ちょうど私のライブクエストの例がやっているように。

これまで私が理解しているように、私はこれがライブクライテリアなしでは可能ではないと信じていますが、私は確信しています。

答えて

4

いいえ、jQueryを使用して明らかに改善する方法はありません。私はライブクエリーが現時点で最善の方法だと言います。

これは他の方法でも可能です。 Here DOMに要素が挿入されたことを検出するために、誰かが独自のポーリングコードをロールバックしています。あなたはこれを適応させることができますが、私が見る限り、ライブクエストはすでにあなたのためにこれをやっています。

のイベントは、hereのように聞こえますが、これはpoor performanceのためdeprecated in the W3C Level 3 Events Specificationです。それはまたnot IE compatibleです。

This questionは、DOMNodeInsertedイベントを監視し、DOMを変更できる方法にフックする代わりに、いくつかの良い議論があります。 (少し古いですが、私の研究からはまだ何も変わっていません)。

結論として、ライブクエリを使用してください。

はまた、jQueryの1.7 .live()(deprecated)、および.delegate()(superseded)から(.off()とし、.die()).on()で交換する必要があることに注意してください。新しいメソッドでは、ライブクエリの依存関係を解決できるものは何も紹介していません。

関連する問題