【问题标题】:Endless scrolling buffer is not honored不支持无休止的滚动缓冲区
【发布时间】:2012-06-08 07:45:04
【问题描述】:

我正在尝试构建一个在网格视图中显示图像的网络应用程序。我已经实现了一个所谓的无限滚动功能,效果很好。问题是我添加了一个 500 像素的缓冲区,以便新图像的加载应该在到达页面末尾之前开始,但这个缓冲区不被尊重。在触发之前,我必须滚动到绝对底部。我能做什么?

我正在使用这个解决方案:http://www.hawkee.com/snippet/9445/

这是我的滚动代码:

$(window).scroll (function () {

 if ($(window).scrollTop () >= $(document).height () - $(window).height () - 500) {

  if (!self.loading) {

   if (self.stop) { return; }

    if (!self.pause) { self.append (); }

   }

  }

});

【问题讨论】:

    标签: jquery infinite-scroll


    【解决方案1】:

    您使用的是什么版本的 jQuery?我最近刚刚实现了您所描述的几乎完全一样的东西,并且效果很好。您可能想尝试查看 $(document).offset()['top'] 以查看您的 body 元素是否向上移动。

    也有可能是所有if() 语句都会降低您的浏览器的速度,从而降低scroll() 的事件率。如果发生这种情况,您可能会在触发事件之前深入缓冲区。

    加快速度的提示:

    • 将简单/二进制检查移至复杂比较之前。这样,如果它们返回 false,您就不会浪费时间计算任何东西
    • >= 运算符替换为 > 以节省一些(可能可以忽略不计的)处理能力。

    如果以下不起作用,则可能是您的 jQuery 版本或其他代码行。

    $(window).scroll(function(e){
      if(!self.loading && !self.stop && !self.pause && ($(window).scrollTop() + $(window).height()) > $(document).offset()['top'] + $(document).height() - 500){
        self.append();
      }
    })
    

    干杯,

    迈克

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 2011-07-25
      • 2016-07-06
      • 2014-07-08
      相关资源
      最近更新 更多