Jquery 过早检测到滚动高度

Jquery 过早检测到滚动高度,jquery,html,css,Jquery,Html,Css,更新: 好的,我已经创建了一个小提琴来展示正在发生的事情:有3个导航,第一个是静态的,第二个应该在页面到达顶部后淡入。看起来第二个导航似乎可以工作,但它们实际上都是在你开始滚动时触发的。当你进入第三页时,导航已经消失了。 ~~~~~~~~~ 当用户滚动过某个点时,我试图在标题中淡入淡出。fadeTo正在工作,但在您开始滚动后很快就会触发。这是我的密码: HTML jQuery $(function () { $(window).scroll(function () { v

更新: 好的,我已经创建了一个小提琴来展示正在发生的事情:有3个导航,第一个是静态的,第二个应该在页面到达顶部后淡入。看起来第二个导航似乎可以工作,但它们实际上都是在你开始滚动时触发的。当你进入第三页时,导航已经消失了。 ~~~~~~~~~ 当用户滚动过某个点时,我试图在标题中淡入淡出。fadeTo正在工作,但在您开始滚动后很快就会触发。这是我的密码:

HTML

jQuery

$(function () {
    $(window).scroll(function () {
        var topHeight = $('.contact-nav').height();
        var scroll = $(window).scrollTop();

        if (scroll >= topHeight) {
            $('.contact-nav').fadeTo(1500, 1);
        }
    });
});
非常感谢您的帮助

1$”。联系导航。高度不提供元素的偏移位置,但提供其高度,因此这不是检查.scrollTop的正确值

2.将两个滚动功能合并为一个功能,以减少处理,因为必须对照当前滚动条检查两个导航条。所以不需要两个独立的$function{…}

3为什么要使用jQuery的fadeTo?它会在滚动的每个像素上被调用,这是一个大量的处理过程,而不是对导航元素使用CSS的转换,因此您只需打开和关闭.show类

4导航被设置为CSS显示:无,这意味着jQuery无法获取其偏移位置


我编辑了你的Fiddle CSS部分和JS,并添加了注释来解释:

你能提供更多的html代码吗?不仅仅是滚动时显示的html代码,请给我们一个JSFIDLE,我们知道的信息还不够
.contact-nav {
    display: none;
}
$(function () {
    $(window).scroll(function () {
        var topHeight = $('.contact-nav').height();
        var scroll = $(window).scrollTop();

        if (scroll >= topHeight) {
            $('.contact-nav').fadeTo(1500, 1);
        }
    });
});