jQuery滚动事件在移动(变通)

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

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

我确定在某个地方有一个解决方法,如果我是正确的,这个限制是由iOS设置的,并且在过去的几年里已经讨论过了。

我试过实现本地滚动模拟器,但他们都没有工作,我想如何,说实话,似乎是矫枉过正,如果我真的想要的是一个持续的scrollTop()而用户正在滚动。

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

任何帮助家伙?

使用jQuery:

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

当用户滚动时,这应该给你一个scrollTop值的一致的stream,但要小心,因为即使用户只是将他的手指在屏幕上,它也会被触发。

请注意,如果您使用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

也许你可以看看iScroll在绑定touchmove事件的touchmove是如何实现的: https : //github.com/cubiq/iscroll/blob/master/src/core.js#L152

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

我不得不去iScroll路线来做到这一点。 我写了我的实现在这里: https : //stackoverflow.com/a/23140322/229315