48

古老的问题:当用户在移动网站或应用程序(网络视图)上滚动元素时触发滚动事件。

我正在寻找的只是scrollTop()当用户在移动设备上滚动我的页面时访问正确的值,而不是在用户停止时获取它。

我确信某处有一种解决方法,如果我是正确的,这个限制是由 iOS 设置的,并且在过去几年中一直在讨论它。

scrollTop()我已经尝试过实现本机滚动模拟器,但它们似乎都没有按照我想要的方式工作,老实说,如果我真正想要的只是用户滚动时的持久性,这似乎有点矫枉过正。

我目前正在考虑可能在 touchStart 上启动一个计数器并在 touchStop 上停止它,但有些事情告诉我我在浪费时间。

有帮助吗?

4

3 回答 3

98

使用 jQuery:

$('body').bind('touchmove', function(e) { 
    console.log($(this).scrollTop()); // Replace this with your code.
});

当用户滚动时,这应该会为您提供一致的 scrollTop 值流,但要小心,因为即使用户只是将手指放在屏幕上,它也会触发。

请注意,如果您使用的是 jQuery >= 1.7,则首选绑定方法 .on()不是.bind()我在示例中使用的方法。在那种情况下,我的例子是

$('body').on({
    'touchmove': function(e) { 
        console.log($(this).scrollTop()); // Replace this with your code.
    }
});

来源:https ://github.com/dantipa/pull-to-refresh-js/blob/master/jquery.plugin.pullToRefresh.js

于 2013-09-17T13:45:53.850 回答
4

也许你可以看看iScroll如何在他们_move绑定到touchmove事件的 -method 中做到这一点:https ://github.com/cubiq/iscroll/blob/master/src/core.js#L152

这有点复杂,但我相信你会弄明白的。您也可以只使用 iScroll 开始并绑定到他们的 scrollmove 事件(我不确定它是如何在 iScroll 5 上调用的,但它onScrollMove在 iScroll 4 中)。that.y然后会给你正确的价值。

于 2013-09-16T11:15:11.327 回答
1

我必须走 iScroll 路线才能做到这一点。我在这里写了我的实现:https ://stackoverflow.com/a/23140322/229315

于 2014-04-17T18:12:35.323 回答