无法在jQuery中读取未定义的属性“top”

时间:2016-01-23 11:22:25

标签: javascript jquery

我刚开发了一个使用jQuery滚动效果的网站。当我点击菜单项时,它应向下滚动并显示该部分。当我点击特定菜单时,它会向下滚动。但是在网址中,我得到了www.example.com/#menuitem_name。特定部分未激活。

这是我的jQuery文件:

$('body').scrollspy({
    target: '.navbar-fixed-top',
    offset: 80
})

$('a.page-scroll').bind('click', function(event) {
    var link = $(this);
    $('html, body').stop().animate({
        scrollTop: $(link.attr('href')).offset().top - 70
    }, 500);
    event.preventDefault();
});

});

HTML

<section id="beta1.0" class="container">Hi</section>
<li><a class="page-scroll" href="#beta1.0">Beta1.0</a> hi</li>

2 个答案:

答案 0 :(得分:1)

您的选择器如下所示:#beta1.0

这意味着&#34; id beta class 0&#34; (或者如果你在选择器中的0之后立即有.,那就可以了。

您需要转义.

link.attr('href').replace(".", "\\.", "g")

答案 1 :(得分:0)

我同意@Quentin的回答。

由于beta1.0而导致问题 如果你只是删除.0或只是点。它工作正常。

<强> Find jsfiddle demo

$(function(){
/*
$('body').scrollspy({
    target: '.navbar-fixed-top',
    offset: 80
});
*/

$('a.page-scroll').bind('click', function(event) {
    var link = $(this);
    $('html, body').stop().animate({
        scrollTop: $(link.attr('href')).offset().top - 70
    }, 500);
    event.preventDefault();
});

});