当用户在菜单中滚动时,我想阻止正文或html的滚动。但是,我不想设置$('html').css('overflow','hidden');
因为这会使整个文档向右移动。我只是想在菜单内滚动或滑动时禁用HTML滚动。我试图搜索这个主题很多,但我发现的任何东西都不适合我。
答案 0 :(得分:1)
菜单打开时设置:
var thisHeight = $(window).scrollTop();
$(window).on('scroll', function() {
$('html,body').scrollTop(thisHeight);
});
$('.noScroll').on('touchstart' , function(e) { e.preventDefault(); })
$('.noScroll').on('touchmove' , function(e) { e.preventDefault(); })
当它关闭时:
$(window).off('scroll');
$('.noScroll').off('touchstart');
$('.noScroll').off('touchmove');
$('.noScroll').on('touchstart' , function(){ return true; });
$('.noScroll').on('touchmove' , function(){ return true; });
您需要在文本class="noScroll"
中为其添加div
,请查看FIDDLE。
iOS解决方案基于:
How to unbind a listener that is calling event.preventDefault() (using jQuery)?