在移动元素上使用-webkit-overflow-scrolling: touch;
样式时,捕获scroll
事件可能非常令人厌烦,因为它们是通过“轻拂”,“平移”以及滚动本身停止时触发的。 p>
与桌面浏览器不同,这使得尝试检测当前正在滚动元素,或元素是否已完成滚动是一件噩梦。
我已经对SO和网络进行了大量的研究并确定了唯一可行的解决方案(我能想到的)是创建一个捕获滚动的第一次触摸的函数,忽略任何后续的{{ 1}}然后捕获最终的滚动事件。
如果这可以以某种方式完成,那么只要它是偶数,递增的值就可以代表pan
...
我已经写了以下内容,但我已经省略了scrollend
个事件,因为我不知道从这个部分开始:
touch
然后,对于任何其他事件,你可以做
var checklist_scroll = 0; // Whenever this value is even, it means the scroll has ended
$('ul').on('scroll',function(){
checklist_scroll++; // Only do this for 'scrollstart' and 'scrollend', NOT when panning through the list
});
答案 0 :(得分:2)
您可以使用jquery-scrollstop插件在功能上添加滚动开始/停止检测。
见这个例子:
var scrolling = false;
$('#some_element').on('scrollstart',function(){
scrolling = true;
});
$('#some_element').on('scrollstop',function(){
scrolling = false;
});
$('#some_tappable_element').hammer().on('tap pressup',function(){
// Use a timeout to ensure the scrolling var has been updated
setTimeout(function(){
if(!scrolling){
// Select the element
}
},10);
});