在锚点链接jQuery中滚动动画

时间:2012-10-04 13:40:16

标签: javascript jquery scroll jquery-animate scrolltop

当有人访问锚链接时,我正在尝试制作滚动动画,如下所示:

www.miweb.com/section/#anchorLink

我正在使用此代码执行此操作,但它有一些错误,因为我无法执行其后的任何其他操作(在这种情况下为alert(“结束”))以防用户访问URL 没有锚ID

$('html, body').animate({
    scrollTop:$('[name="'+window.location.hash.replace("#", "")+'"]').offset().top
}, 500);

alert("the end");

如果用户从具有锚ID的URL进行访问,则会执行该操作。

在任何情况下,如何在此功能后执行代码?

感谢。

1 个答案:

答案 0 :(得分:3)

如果你想要的是在动画之后执行代码,请执行以下操作:

$('html, body').animate({
    scrollTop:$('[name="'+window.location.hash.replace("#", "")+'"]').offset().top
}, 500, function() {
    alert("the end");
});

<强>更新
在OP的评论之后,我认为当offset()为null(没有锚时就是这种情况)时,你正在访问top属性时出现javascript错误,所以你要防止访问那个可能的null引用,如下所示:

dest = $('[name="'+window.location.hash.replace("#", "")+'"]').offset();
dtop = dest != null ? dest.top : null;
$('html, body').animate({
    scrollTop: dtop
}, 500);

alert("the end");​

现在alert()打印就好了。

如果你看一下浏览器的javascript控制台,你可以很容易地发现这样的类似错误,我刚刚这样做了,看到了关于null引用的错误。