利用jquery禁止外层滚动条的滚动
前言
通常情况下,当内部滚动条滚动到两端时,再接着滚动时外层的滚动条就会跟着滚动;可是有时我们希望用户只能滚动当前区域,而不触发外层(window)的滚动条,离开当前区域后,才能滚动外层的滚动条。因为用户可能一不小心滚动的幅度过大了,导致当前区域离开可视区域。
在jquery中,滚动事件是scroll,而这个事件是不能阻止冒泡和阻止默认事件的。假如我们设定要禁止window的滚动条,我采取的策略是:当鼠标进入到当前区域后,则window的滚动条的高度始终是鼠标进入前的高度
如下的代码:
<styletype="text/css"> .main{ overflow:auto; width:400px; height:400px; border:1pxsolid#aaa; } .mainp{ height:800px; } </style> <body> <divid="main"class="main"> <p></p> </div> <pstyle="height:1000px;"></p> </body> $(function(){ varscrollTop=-1;//鼠标进入到区域后,则存储当前window滚动条的高度 $('#main').hover(function(){ scrollTop=$(window).scrollTop(); },function(){ scrollTop=-1; }); //鼠标进入到区域后,则强制window滚动条的高度 $(window).scroll(function(){ scrollTop!==-1&&$(this).scrollTop(scrollTop); }) })
从上面的代码可以看到,我并没有阻止window滚动条的事件,而是用户每次滚动时,都会重新进行赋值。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,当然,或许还有更好的方法,欢迎大家提供,谢谢!