2012-02-05 79 views
0

我使用流行的jQuery插件砌體,以適合我的列在我的佈局很好。我使用的是setInterval來逐步地解決相同問題的BoltHead曾在這裏:JQuery, setTimeout not workingsetInterval能否大幅降低瀏覽器性能?

的解決方案是使用的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來滑動更多的內容,因此需要磚石來重新調整佈局。對此解決方案有什麼想法?

+0

爲什麼只有在添加新內容時才更新? – 2012-02-05 04:41:47

+0

和in一樣,當slideToggle被觸發時更新? – JCHASE11 2012-02-05 04:42:40

+0

是的,試圖更新每一秒,而沒有任何改變佈局將只是沒有使用CPU。 – 2012-02-05 04:44:29

回答

3

的slideToggle接收回調作爲第二個參數,所以更新你的插件,這樣的事情:

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

是的,這是一個壞主意,定期對更新沒有理由。

+0

是的,slidetoggle上的回調是一個更好的解決方案,謝謝! – JCHASE11 2012-02-05 04:46:21

0

根據我的經驗,像這樣運行會降低瀏覽器速度。起初你可能沒有注意到,但腳本運行得越久,它就會越糟糕。我真的很喜歡@vucetica的答案。

0

這隻取決於插件需要「masonrify」的塊數。如果您擁有20-50個塊,則每500毫秒運行一次更新就沒有問題。這是我個人的經歷,與您的案例完全一樣。