未捕获的TypeError:无法读取属性' top' undefined(在滚动上更改元素类)

时间:2016-05-24 14:40:17

标签: jquery scroll typeerror uncaught-typeerror

我遇到了一些与Uncaught TypeError: Cannot read property 'top' of undefined错误相似的问题,但我无法找到解决自己问题的方法。在我的JS文件中,有以下代码:

$(document).ready(function() {
    $(document).on('scroll', function() {
        var verticalPosition = $(window).scrollTop();
        $('#sitenav > ul > li > a').each(function() {
            if ( verticalPosition >= $($.attr(this, 'href')).offset().top - 85) {
                $('#sitenav > ul > li > a').not(this).parent().removeClass('current-menu-item'); // remove class from parent <li>
                $(this).parent().addClass('current-menu-item'); // add class to parent <li>
            }
        });
    });
});

问题似乎是这一行:

if ( verticalPosition >= $($.attr(this, 'href')).offset().top - 85) {

代码工作正常,但我不断说错误:

  

未捕获的TypeError:无法读取属性&#39; top&#39;未定义的

滚动时发现的错误数量也在不断增加。在我不断收到这些错误以及如何修复错误时,为什么代码可以工作的任何提示?

这是JS引用的HTML部分:

<nav id="sitenav" class="col-lg-9 col-md-9 pull-right">
    <ul class="list-unstyled text-right">
        <li><a href="#about">About</a></li>
        <li><a href="#contact">Contact</a></li>
        <!-- etc. -->
    </ul>
</nav>

0 个答案:

没有答案