setInterval可以大大降低浏览器性能吗?

时间:2012-02-05 04:40:05

标签: jquery setinterval jquery-masonry

我正在使用流行的jquery插件Masonry在我的布局中很好地适应我的列。我使用setInterval来解决与BoltHead在这里完全相同的问题:JQuery, setTimeout not working

解决方案是使用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来滑动更多内容,因此需要砌体来重新调整布局。有关此解决方案的任何想法吗?

3 个答案:

答案 0 :(得分:3)

slideToggle接收回调作为第二个参数,所以在那里更新你的插件,如下所示:

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

是的,无缘无故地定期更新是个坏主意。

答案 1 :(得分:0)

根据我的经验,运行这样的东西会降低浏览器的速度。一开始你可能不会注意到它,但是脚本运行的时间越长,它就越糟糕。我非常喜欢@vucetica回答。

答案 2 :(得分:0)

这仅取决于插件需要“masonrify”的块数。如果你有20-50个块,那么每500ms运行一次更新就没问题了。这是我个人的经历,与你的情况完全一样。