1

我在 jQuery Mobile 应用程序中为列表实现无限滚动时遇到了一些麻烦。我现在使用的代码是这样的:

$(window).on('scrollstop', function () { 
  if ($(window).scrollTop() >= $(document).height() - $(window).height() - 20) {
    if(scrollLoad && currentPage < totalPages)
    {
      $.mobile.showPageLoadingMsg();
      ShowMoreThings();
      scrollLoad = false; //Is set to true on ajax success in ShowMoreThings().
    }
  }
});

然而,这不会导致刷新总是触发。问题似乎是,一旦用户释放屏幕,事件就会触发,并且视口在此之后继续移动(由于滚动通常在移动设备上工作的方式)。然后,该事件将在它仍在移动时计算位置,并且不会触发刷新,因为它还没有到达底部。然后,现在视口位于页面底部,如果用户尝试进一步向下滚动,因为视口没有移动,则不会触发进一步的滚动事件。要触发它,我需要稍微向上滚动然后再向下滚动。

我也尝试听 scrollstart ,但它不会触发尝试滚动到“不存在的空间”。

4

3 回答 3

1

onscroll我发现使用该事件来绑定我在 jquery mobile 中的无限滚动更可靠。

于 2012-09-24T15:31:04.527 回答
0

看看 jQuery 航点http://imakewebthings.com/jquery-waypoints/。您可以使用航点触发获取更多数据。

于 2012-09-24T15:59:36.333 回答
0

因此,经过一些试验和尝试其他解决方案后,似乎有一个简单且相当明显的解决方案。如果我增加滚动边距,即从问题到 200 像素的 20 像素,它将始终触发,无论滚动速度如何,或者如果我在屏幕到达页面底部 200 像素范围内之前释放屏幕。

我不知道事件何时触发或它为什么起作用。无论哪种方式,它现在都可以正常工作,并且具有大于 20 的边距可能会更好,因为它在用户看到所有现有内容之前就开始加载新内容。

于 2012-09-25T06:36:10.760 回答