【发布时间】:2016-02-20 15:24:18
【问题描述】:
我有一个滚动到元素 sn-p 为:
$('html,body').animate({
scrollTop: $(window.location.hash).offset().top
},1000);
这是完美的,但我需要在进入页面几秒钟后运行它(有延迟),所以我使用setTimeout() 来获取它,但现在页面跳转到部分(哈希)而不滚动或提示任何错误消息。
setTimeout(function(){
$('html,body').animate({
scrollTop: $(window.location.hash).offset().top
},1000);
}, 2000);
你能告诉我我做错了什么以及为什么这不能延迟吗?!
【问题讨论】:
-
它是如何工作的? window.location.hash 返回 # 符号后的部分 url,scrollTop 属性需要整数值..
-
@philosophocat,
$(window.location.hash)- jQuery 选择器,hash这里类似于#hash,所以这个在 jQuery 中用于id的有效选择器。然后只需获取offset和top属性 -
您能否提供可以重现您的问题的 sn-p 或 jsfiddle?
-
我不认为
html,body是正确的。也许您的意思是html body(空格而不是逗号)? -
@Grundy,如果你是对的,那很有趣,但不安全的解决方案:在没有任何检查的情况下依赖散列并不是一个好主意,它可能是问题的关键:元素错过了。
标签: javascript jquery