jquery锚动画不工作

时间:2014-06-30 17:02:44

标签: javascript jquery html

我试图为锚链接上的滚动设置动画并收到错误:

无法阅读财产' top'未定义的

这是js:

$('a').click(function(){
    $('html, body').animate({
        scrollTop: $('[name="' + $.attr(this, 'href').substr(1) + '"]').offset().top
    }, 1000);
    return false;
});

这是html:

<li><a href="index.html#r">My anchor link</a></li>

2 个答案:

答案 0 :(得分:1)

offset方法为空集合返回undefined值。看来你的选择器没有选择任何元素。在阅读length属性之前,您可以检查集合的offsettop的返回值。

如果您想获得锚点的hash,则可以使用hash属性this.hash,其中this指的是{{1}元素。

答案 1 :(得分:1)

这是错误的: $。attr(this,&#39; href&#39;)。substr(1),使用此获取href attrib:

  

$(本).attr(&#39; HREF&#39);

这是你的工作代码。首先我提取锚名称,然后使用它:

$('a').click(function(){
    var href = $(this).attr('href');
    var name = href.substr(href.lastIndexOf('#')+1);

    $('html, body').animate({   
        scrollTop: $('[name="' + name + '"]').offset().top
    }, 1000);
    return false;
});