无法读取未定义链接href的属性“top”

时间:2016-02-22 20:09:27

标签: javascript jquery

我正在通过滚动为导航中的链接创建一个活动类。

    function onScroll(event){
        var scrollPosition = $(document).scrollTop();
        $('.sticky-navigation-posts a').each(function () {
            var currentLink = $(this);
            var refElement = $(currentLink.attr("href"));
            console.log(refElement);
            if (refElement.position().top <= scrollPosition && refElement.position().top + refElement.height() > scrollPosition) {
                $('.sticky-navigation-posts .title-wrapper .post-title a').removeClass("active");
                console.log('yes!');
                currentLink.addClass("active");
            } else {
                currentLink.removeClass("active");
                console.log('no!');
            }
        });
    }

当我console.log(refElement)时,会记录该元素。但是,如果我console.log(refElement.position().top),则会抛出此错误Cannot read property 'top' of undefined。我已经调试了一段时间了,无法弄明白。有任何想法吗?我还尝试在refElement中包装$()。所有这些代码都是$(document).ready()函数中的包装。

1 个答案:

答案 0 :(得分:1)

好吧,我现在明白你的意思了。但是,它对我来说很好。不确定你哪里有问题?

我添加了console.log(refElement.position().top);并且它正确地记录到控制台,甚至所需的行为也正常工作!? http://jsfiddle.net/thesane/Dxtyu/3133/