当有人访问锚链接时,我正在尝试制作滚动动画,如下所示:
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进行访问,则会执行该操作。
在任何情况下,如何在此功能后执行代码?
感谢。
答案 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引用的错误。