0

人気のあるjqueryプラグインMasonryを使用して、列をレイアウトにうまく適合させています。私はsetIntervalを使用して、BoltHeadがここで持っていたのとまったく同じ問題を解決しています: JQuery、setTimeoutが機能していません

解決策は、setTimeoutを使用して、次のように石積みプラグインを毎秒更新することです。

$(function() {
  setInterval(update, 500);
});

    function update() {
        var $container = $('#packages');
        $container.imagesLoaded(function(){
          $container.masonry({
            itemSelector : '.mainPackage',
            columnWidth : 316,
            singleMode: true,
            gutterWidth: 15
          });
        });
    }

これはブラウザのパフォーマンスに関しては悪い考えですか?このかなり重い関数を毎秒実行するjqueryは、処理速度を低下させると思います。これは悪い習慣ですか?これを行う理由は、.slideToggleを使用してより多くのコンテンツをスライドダウンしているため、レイアウトを再調整するために石積みが必要だったためです。このソリューションについて何か考えはありますか?

4

3 に答える 3

3

slideToggleは2番目の引数としてコールバックを受け取るので、プラグインを次のように更新します。

slideToggle(time, function(){
    update(); // this is your "update" function from question example
});

はい、理由もなく定期的に更新することはお勧めできません。

于 2012-02-05T04:43:56.197 に答える
0

私の経験では、このようなものを実行するとブラウザの速度が低下します。最初は気付かないかもしれませんが、スクリプトの実行時間が長くなると悪化します。私は@vuceticaの答えが本当に好きです。

于 2012-02-05T04:47:47.600 に答える
0

これは、プラグインが「石工」するために必要なブロック数にのみ依存します。20〜50ブロックのようなものがある場合は、500ミリ秒ごとに更新を実行しても問題ありません。これは、あなたとまったく同じケースでの私の個人的な経験からのものです。

于 2012-12-29T01:38:42.950 に答える