2014-10-02 97 views
0

我想将菜单加载固定到页面底部(position:absolute;bottom:0px;),但是当用户滚动时,我希望它固定到顶部(position:fixed;top:0px;)。jQuery滚动然后修复

这里是我的jQuery:

var main = function(){ 
    var menu = $('#menu') 

    $(document).scroll(function(){ 
     if ($(this).scrollTop() >= $(window).height() - menu.height()){ 
      menu.removeclass('bottom').addclass('top') 
     } else { 
      menu.removeclass('top').addclass('bottom') 
     } 
    }) 
} 
$(document).ready(main); 

这里是我的JSFiddle

我还没有能够成功地添加一流。

任何想法?谢谢!

+3

尝试使用'removeClass'和'addClass'。资本化非常重要。 – Stryner 2014-10-02 13:29:47

+0

@已完成更改,但该类仍未添加。 – starvator 2014-10-02 13:31:46

+0

并且不要忘记嵌入jQuery。 – YMMD 2014-10-02 13:31:57

回答

3

你已经混淆了大小写,以及你没有将jQuery包含到你的JSFiddle中。这里是更新的JSFiddle。 http://jsfiddle.net/tb2ume6v/1/

var main = function(){ 
    var menu = $('#menu') 

    $(document).scroll(function(){ 
     if ($(this).scrollTop() >= $(window).height() - menu.height()){ 
     menu.removeClass('bottom').addClass('top') 
     } else { 
     menu.removeClass('top').addClass('bottom') 
     } 
    }) 
} 
$(document).ready(main); 
+0

有趣的是,这适用于JSFiddle,但不适用于我的本地主机,即使使用 ' – starvator 2014-10-02 13:37:52

+0

是否在包含jQuery或之前完成jQuery调用? – 2014-10-02 13:39:49

+0

另外检查控制台,看看是否有任何错误 – 2014-10-02 13:40:05

0

您还应该终止您的语句,并且您的第一个jsfiddle没有加载js库。

var main = function(){ 
    var menu = $('#menu'); 

    $(document).scroll(function(){ 
     if ($(this).scrollTop() >= $(window).height() - menu.height()){ 
     menu.removeClass('bottom').addClass('top'); 
     } else { 
     menu.removeClass('top').addClass('bottom'); 
     } 
    }); 
}; 
$(document).ready(main); 
+0

JavaScript和jQuery因此实际上并不需要分号。这只是惯例。即使在那样的情况下,我尝试了它,但它并没有解决我的问题。 – starvator 2014-10-02 13:58:32

+0

我不认为你的jQuery库加载正确。你没有得到任何控制台错误? – Xm7X 2014-10-02 14:03:08

+0

问题是我没有声明文档类型 – starvator 2014-10-02 14:04:47