我想在用户向下滚动移动设备的页面时禁用touchstart事件。该页面包含各种元素,当您单击切换类时,我希望当用户向下滑动以向下滚动页面时,将触摸touchstart事件。
JQUERY
$(document).on('touchstart click', '.flip-container ', function(event){
event.preventDefault();
$(this).find('.flipper').toggleClass('hover');
});
任何人都知道如何?谢谢!
答案 0 :(得分:6)
var touchmoved;
$('button').on('touchend', function(e){
if(touchmoved != true){
// you're on button click action
}
}).on('touchmove', function(e){
touchmoved = true;
}).on('touchstart', function(){
touchmoved = false;
});
答案 1 :(得分:1)
我认为您可以在页面滚动时使用标记,并仅在不滚动时添加该类的切换。类似的东西:
//SET THE FLAG
var scrolling = false;
var endScrolling;
$(window).on("scroll", function() {
scrolling = true;
endScrolling = window.setTimeout(function() {
scrolling = false;
window.clearTimeout(endScrolling);
}, 20);
});
$(document).on('touchstart click', '.flip-container ', function(event){
event.preventDefault();
//BLOCK THE CLASS TOGGLE IF THE PAGE IS SCROLLING
if(!scrolling) {
$(this).find('.flipper').toggleClass('hover');
}
});
答案 2 :(得分:0)
您可以尝试这样的事情:
var initialValue;
var finalValue;
$( 'body' ).on( 'touchstart', 'yourSelectorHere', function() {
initialValue = $( this ).offset().top;
}).on( 'touchend', 'yourSelectorHere', function() {
finalValue = $( this ).offset().top;
});
$( 'body' ).on( 'touchend', 'yourSelectorHere', function(e) {
setTimeout( function(){ // is time for get the finalValue
if( initialValue == finalValue ){
// your code here
}
}, 300);
});