0

重複の可能性:
$(this) の代わりに $this を使用すると、パフォーマンスが向上しますか?

画面全体を占める劇場のようなフォト ギャラリーを作成しています。ウィンドウ サイズに応じて div とイメージのサイズを変更します。これを行うために、私は以下を使用しています:

function setSizes()
{
var theaterHeight = $(".theater-wrapper").height();
var theaterWidth = $(".theater-wrapper").width();
}

$(window).on("resize", window, function() {
        setSizes();
    }); 

それは基本的に、高さと幅などを設定するための寸法を取得するために要素を選択するために行っていることですが、ウィンドウのサイズ変更は少し遅くなり、かなりの数のセレクターを持ち、かなりの数の div を変更することになりますおよび画像はすべてこの 1 つの関数で処理されます。また、最初の呼び出しが適切に機能しない場合や、その逆の場合もあります。私の質問は、セレクターを組み合わせることでパフォーマンスが向上するかどうかなどです。

お気に入り:

var $theaterWrapper = $(".theater-wrapper");

var theaterHeight = $theaterWrapper.height();
var theaterWidth = $theaterWrapper.width();
4

2 に答える 2

1

後者の場合、DOM のトラバースが1 回少なくなるため、明らかにそうです。

使用するセレクターが静的なものである場合は、常にセレクターを保存して保存することをお勧めします...

また、コードがより小さく、無駄のないものになります。

于 2012-10-11T04:03:06.043 に答える
1

そのまま使用するか、特定のケースにより厳密に一致するように変更できる JSPerf を次に示します。

http://jsperf.com/combined-jquery-selectors

私のブラウザ (Mac の Chrome) では、元のバージョンの実行速度は、提案された最適化よりも約 4% 遅くなります。Safari を使用している iPhone では、約 6% 遅くなります。しかし、私の Mac 上の Firefox では、14% の違いがあります。

したがって、提案された改善は実際には優れているように見えます。

于 2012-10-11T04:07:48.867 に答える