1

对不起我的英语不好,但我有一个问题。

这是我收到的信息:

Uncaught TypeError: Cannot read property 'top' of undefined 

这是我的功能:

    function onScroll(event){
        var scrollPos = $(document).scrollTop();
        $('#menu-center a').each(function () {
            var currLink = $(this);
            var refElement = $(currLink.attr("href"));
            if (refElement.position().top<= scrollPos && refElement.position().top + refElement.heig
ht() > scrollPos) {
                $('#menu-center ul li a').removeClass("active");
                currLink.addClass("active");
            }
            else{
                currLink.removeClass("active");
            }
        });
    }

我不明白,因为我在本地有一个具有此功能的页面,它工作正常。

我在网上搜索过,但没有任何内容与我的问题相对应。

谢谢你的帮助

4

2 回答 2

0

更改此行:var refElement = $(currLink.attr("href")); 在此行中:var refElement = $(currLink).attr("href");

于 2014-08-22T20:33:22.183 回答
0

我找到了上述问题的解决方案。请参阅以下代码片段

jQuery(document).ready(function($) {
  $(document).on("scroll", onScroll);
});

function onScroll(event){
  var scrollPos = $(document).scrollTop();
  $('#menu-center a').each(function () {
        var currLink = $(this);
        var refElement = currLink.attr("href");
        var splitEle = refElement.split('#');

        if ($("#"+splitEle[1]).offset().top <= scrollPos && $("#"+splitEle[1]).offset().top + $("#"+splitEle[1]).height() > scrollPos) {
            $('#menu-center ul li').removeClass("active");
            currLink.parent().addClass("active");
        }else{
            currLink.parent().removeClass("active");
        }
    });
}
于 2015-11-28T04:45:57.977 回答