1

私はいくつかのJQueryコードに取り組んでおり、セレクターのキャッシュについて質問があります。スクロール時に呼び出される特定の関数があります(したがって、高速である必要があります)。次のように、初期化中に関数で使用されるセレクターをキャッシュしてみました。

var myElement = $('#myElement');

function onScroll()
{
    myElement.whatever();
}

firebugでコードをプロファイリングすると、JQueryセレクター関数が関数のちょうど5倍の頻度で呼び出されonScroll(関数で5つの異なるセレクターを使用します)、実行時間の大部分を占めていることがわかります。

1)では、この方法でキャッシュすることの利点は正確には何ですか?私はサルドニックではありません:)

2)DOMが変更された場合にセレクターを再実行する必要があることは理解していますが、JQuery内にとどまりながら、関数を毎回実行する必要がないように、選択した単一のオブジェクトをキャッシュする方法はありますか?

4

1 に答える 1

2
  1. 変数を使用しているmyElement場合は、オブジェクトの作成時に見つかった要素への参照を含むjQueryオブジェクトを使用しています。jQueryオブジェクトを使用する場合、要素のセットを更新するためにセレクターが再実行されることはありません。

  2. はい、あなたはあなたが示したように正確に行います。

于 2012-06-25T22:15:42.733 に答える