Javascript 滚动时,如何使菜单栏从页面中间保持在顶部?

Javascript 滚动时,如何使菜单栏从页面中间保持在顶部?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想做一些像上面提到的那样的事情,所以我使用下面的方法(这很好)来创建我自己的,但是包括了自定义菜单。现在它不工作了,我想可能是因为javascript中的错误: $(document).ready(function() { $(window).scroll(function(e) { $el = document.getElementById('temp'); if ($(this).scrollTop() > 100) {

我想做一些像上面提到的那样的事情,所以我使用下面的方法(这很好)来创建我自己的,但是包括了自定义菜单。现在它不工作了,我想可能是因为javascript中的错误:

$(document).ready(function() {
    $(window).scroll(function(e) {
        $el = document.getElementById('temp');
        if ($(this).scrollTop() > 100) {
            $el.addClass("fixedNav");
        } else {
            $el.removeClass("fixedNav");
        }
    });
});
这无法识别div的ID并从css请求类,但不幸的是,我不能在这里使用class属性。你们能帮我解决这个问题吗?谢谢

替换此行:

$el = document.getElementById('temp');
为此:

$el = $('#temp');


或者将
$el
包装到jQuery对象中:

$el = document.getElementById('temp');
// ...
$($el).removeClass("fixedNav");


另外,您应该将
$el
声明移到
$(窗口)之外。滚动
方法(这样滚动时不会在DOM中搜索元素)

$(文档).ready(函数(){
变量$el=$(“#temp”);
$(窗口)。滚动(功能(e){
if($(this.scrollTop()>=100&&!$el.hasClass(“fixedNav”)){
$el.addClass(“固定资产净值”);
}else if($(this.scrollTop()<100&&$el.hasClass(“fixedNav”)){
$el.removeClass(“固定资产净值”);
}
});
});

@randonuser1检查我的更新答案
$(document).ready(function(){
    var $el = $('#temp');
    $(window).scroll(function (e){
        if ($(this).scrollTop() >= 100 && !$el.hasClass("fixedNav")) {
            $el.addClass("fixedNav");
        }else if($(this).scrollTop() < 100 && $el.hasClass("fixedNav")){
            $el.removeClass("fixedNav");
        }
    });
});