我想在用户向下滚动页面时从菜单栏中删除一个类。我阅读了以下主题和doc,以了解jquery scroll():
1)https://stackoverflow.com/a/16391580/1050957
2)http://api.jquery.com/scroll/
这是我的代码:
var jquery = jQuery.noConflict();
jquery(document).ready(function(){
$(window).scroll(function () {
if (document.body.scrollTop > 100)
$('#menuBar').removeClass( "nav-menu" );
else
// something something
});
});
上面的代码是来自另一个主题的SO答案的摘录(上面给出的链接)。但是当我添加该代码时,我看到Not enough arguments to Window.scroll.
的{{1}}错误。我不知道为什么它期望2个参数,因为我在scroll()上阅读的文档使用没有参数。我做错了什么吗?或者在更高版本的Jquery中有什么变化?
我正在使用jquery v1.11.0
答案 0 :(得分:2)
使用完整的jquery代码。工作示例:
#menuBar { background: yellow; width: 50px; height: 800px; }
#menuBar.nav-menu { background: red; }
<div id="menuBar" class="nav-menu"></div>
<div style="margin-bottom: 999em;"></div>
$(document).ready(function(){
$(window).on('scroll', function () {
var $body = $('body');
var $target = $('#menuBar');
if ($body.scrollTop() > 100 && $target.hasClass('nav-menu')){
$target.removeClass("nav-menu");
}
else if( $body.scrollTop() <= 100 && !$target.hasClass('nav-menu') ){
$target.addClass('nav-menu');
}
});
});
确保检查是否已添加该类以防止不必要的内容。
检查jsfiddle
答案 1 :(得分:1)
如果需要,您可以在滚动功能中添加一个空参数:
$(document).ready(function(){
$(window).scroll([], function () {
...
});
});
看看这个:
http://colorlib.com/wp/forums/topic/fix-a-bug-in-latest-version-window-scroll/