我在 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 ,但它不会触发尝试滚动到“不存在的空间”。