【问题标题】:javaScript bug in Firefox - Failing to update menu items with active classFirefox 中的 javaScript 错误 - 无法使用活动类更新菜单项
【发布时间】:2014-10-23 07:40:21
【问题描述】:

我正在构建一个具有不同部分的“向下滚动”网站,但基本上您需要/可以做的就是滚动或按下将自动滚动到所选部分的菜单。

我有一段 js 使用 .active 类更新菜单链接,这样当您向下滚动时,您所看到的部分的相应菜单项将变为活动状态。 虽然它在 Chrome 上运行良好,但我似乎无法让它在 Firefox/Explorer 上运行。我只是找不到问题......

我制作了一个小的 jsfiddle (http://jsfiddle.net/Lxzwfk0u/) 来描述我正在构建的网站,并正确更新活动类。 (至少它在 chrome atm 上正确显示)

谁能帮我找出问题所在?我已经把它缩小到小提琴中的一点点js。我想...(也发在这里,也许你可以立即发现错误)

// add and remove 'active' class by scroll position
$(document).on("scroll", onScroll);
    function onScroll(event){
        var scrollPos = $('body').scrollTop();
        $('nav a').each(function () {
            var currLink = $(this);
            var refElement = $(currLink.attr("href"));
            if (refElement.position().top - 40 <= scrollPos && refElement.position().top - 40 + refElement.height() > scrollPos) {
                $('nav a').removeClass("active");
                currLink.addClass("active");
            }
            else{
                currLink.removeClass("active");
            }
        });
    }

谢谢

【问题讨论】:

    标签: jquery html css scroll


    【解决方案1】:

    http://jsfiddle.net/Lxzwfk0u/2/

    我所做的唯一改变是在这里:

    var scrollPos = $(document).scrollTop();
    

    当我之前回显这个变量时,它在 IE 和 FireFox 中都会给我一个 0 值。我想这是因为body 元素上没有滚动条,而是在document 元素上。

    【讨论】:

    • 成功了!!我学到了一些东西!谢谢!!不幸的是,我没有足够的声誉来支持你,对不起!!
    猜你喜欢
    • 2020-11-16
    • 2022-08-07
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多