Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在元素内部滚动时防止HTML滚动,而不隐藏滚动条_Javascript_Css_Scroll_Overflow - Fatal编程技术网

Javascript 在元素内部滚动时防止HTML滚动,而不隐藏滚动条

Javascript 在元素内部滚动时防止HTML滚动,而不隐藏滚动条,javascript,css,scroll,overflow,Javascript,Css,Scroll,Overflow,我想防止用户在菜单内滚动时滚动正文或html。但是,我不想设置$('html').css('overflow','hidden')

我想防止用户在菜单内滚动时滚动正文或html。但是,我不想设置
$('html').css('overflow','hidden')

当菜单打开时设置:

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; });
您需要在文本
div
中添加一个
class=“noScroll”
,选中FIDDLE

iOS解决方案基于:


JSFIDLE:。
上传测试:。这主要起作用,但问题是在触摸屏设备上,它会导致背景上下闪烁,而不是在刷卡过程中保持在一个位置。有办法吗?我这里有一个初学者演示,你可以在手机上查看:嗯,iOS上的问题是,滚动事件只在touchend上触发。让我看看我能做些什么。这次更新没有什么区别——效果是一样的。不仅仅是iOS,还有android。我发布了错误的JSFIDLE。现在更新和上传。在iOS上“起作用”,但如果你在底部并且还在滚动,就会有一个邪恶的跳跃。没有android,请反馈。