我有一段jQuery代码 - 理论上 - 根据URL标记中的哈希值(myaddress.html #wheretoscroll)向下滚动到窗口的特定部分。
调用的代码是:
$(document).ready(function() {
anchor = unescape(self.document.location.hash.substring(1))
if (anchor) {
$.scrollTo('#anchor-' + anchor, 500, {offset:-150});
}
}
问题是文档滚动到远离其预期对齐的位置。它几乎是靠近顶部的锚点,但随着文档的减少,似乎向下滚动的距离越来越不准确。
...然而
如果我在.click或.hover函数中运行相同的代码,例如:
$(document).ready(function() {
$('body').hover(function() {
anchor = unescape(self.document.location.hash.substring(1))
if (anchor) {
$.scrollTo('#anchor-' + anchor, 500, {offset:-150});
}
});
});
它滚动到它应该的确切位置。我假设这是一个问题,DOM在.ready时没有被正确读取?任何纠正这一点的建议(或者一旦页面加载就触发动作的更优雅的方式,但不直接通过.ready)将非常感激。
如果重要,我可以在这里找到我正在使用的.scrollTo插件:http://flesler.blogspot.com/2007/10/jqueryscrollto.html
干杯...
答案 0 :(得分:2)
请改为尝试:
$(window).load(function() {
anchor = unescape(self.document.location.hash.substring(1))
if (anchor) {
$.scrollTo('#anchor-' + anchor, 500, {offset:-150});
}
}
在DOM准备好后,页面的某些部分将继续加载。加载所有内容时会$(window).load()
触发 - 包括图像。