如何在切换移动导航时阻止滚动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在切换移动导航时阻止滚动相关的知识,希望对你有一定的参考价值。
我用html CSS和BS3制作的网站的移动导航是非常基本的。但我想在切换汉堡包按钮时禁用身体其他部分的滚动。
我的问题是,当它打开时,你不能滚动,这是我想要的。但是,当您关闭菜单时,它不起作用。
继承了一些HTML:
<!-- mobile nav links-->
<div class="mob-div-nav">
<div class="row">
<div class="col-xs-12" style="height:100%;">
</div>
</div>
</div>
<!-- END Mobile Nav-->
这是Js:
$("#hamburger").on("click", function (event){
$(".mob-div-nav").slideToggle(500);
function noscroll() {
window.scrollTo( 0, 0 );
}
// add listener to disable scroll
if ($(".mob-div-nav").css("display") == "block"){
window.addEventListener('scroll', noscroll);
} else if ($(".mob-div-nav").css("display") == "none") {
window.removeEventListener('scroll', noscroll);
}
});
答案
使用函数内部的if语句不在外面..你的代码应该是这样的
$(document).ready(function(){
// #hamburger click event
$("#hamburger").on("click", function (event){
$(".mob-div-nav").slideToggle(500);
}); // End of #hamburger click event
// window scroll event
$(window).on('scroll' , noscroll);
});
// functions here
// noscroll function
function noscroll() {
if ($(".mob-div-nav").is(':visible')){
window.scrollTo( 0, 0 );
}
}
说明:
$(document).ready(function(){
- 当文件准备好时read Herewindow.addEventListener
是一个纯粹的javascript和$(window).on('scroll'
是一个jquery .. jQuery .on(); vs JavaScript .addEventListener();.is(':visible')
是一个jquery函数检查元素是否可见,:hidden
如果元素被隐藏,:checked
如果被检查等等..你可以读到关于.is() here
以上是关于如何在切换移动导航时阻止滚动的主要内容,如果未能解决你的问题,请参考以下文章