Javascript jQuery元素未在正确的函数上更改

Javascript jQuery元素未在正确的函数上更改,javascript,jquery,css,web,Javascript,Jquery,Css,Web,我想有一个导航栏,当你不在页面顶部时,它会自动显示出来,这是有效的;问题是当我滚动回到顶部时,没有任何变化。有人能看看我的代码,告诉我需要更改或更新什么吗 $(文档).ready(函数(){ $(窗口)。滚动(函数(){ log($(window.scrollTop()); 如果($(窗口).scrollTop()!=0){ $(“#topnav”)。设置动画({ 不透明度:1 }, 300); }else if($(窗口).scrollTop()==0){ 控制台日志(“完成”); $(“#

我想有一个导航栏,当你不在页面顶部时,它会自动显示出来,这是有效的;问题是当我滚动回到顶部时,没有任何变化。有人能看看我的代码,告诉我需要更改或更新什么吗

$(文档).ready(函数(){
$(窗口)。滚动(函数(){
log($(window.scrollTop());
如果($(窗口).scrollTop()!=0){
$(“#topnav”)。设置动画({
不透明度:1
}, 300);
}else if($(窗口).scrollTop()==0){
控制台日志(“完成”);
$(“#topnav”).css({
不透明度:0
});
}
});
});
我想

if ($(window).scrollTop() != 0) {
   $("#topnav").animate({opacity: 1}, 300);
}
正在
#topnav
上排队等待大量动画,因此尝试更改元素mid动画不会产生效果

您可以设置一个标志,以确保动画仅限于一次。例如:

var flag = false;

$(window).scroll(function(){
    if ($(window).scrollTop() != 0) {
        if(!flag){
            $("#topnav").animate({opacity: 1}, 300, function(){
              flag = false;
            });
              flag = true;
            }
        }
        else if ($(window).scrollTop() == 0) {
            console.log("done");
            $("#topnav").css({opacity: 0});
        }
})

不,仍然不工作。记录“完成”了吗?是的,它正在记录。它不需要引号,这是一个错误的答案。我从不使用引号。应该是:$(“#topnav”).css('opacity','0')@Santi这里发布的代码绝对不是MCVE。它没有可操作的标记,我们也没有办法实际运行代码来重现问题。我想,我想我只是觉得一个标志和原始投诉可能已经令人满意了,而不需要第二个尖刻的“PHPBB”注释。@Amorandron-看到这个-你应该使用
css
来完成这些转换,并为“on”状态添加一个类,以使用
opacity:1转换不透明度;过渡:.3s
例如,将CSS过渡添加到#topnav,并使用另一个CSS()将不透明度更改为1,而不是使用animate()。还修复了css()上的sintax:css:#topnav{opacity:0;transition:.3s;}css():$(“#topnav”).css(“opacity”,“0”);