我知道这个问题已经完成了stackoverflow,我也从这里得到了我的解决方案。但它仍然存在一个小问题。
我有一个固定在顶部的小子菜单,所以当我点击一个锚链接时,我想在子菜单后面找到锚点。
首先是我的代码,这在大多数情况下都适用:
function offsetSubmenu() {
if(location.hash.length !== 0) {
window.scrollTo(window.scrollX, window.scrollY - submenuHeight);
}
}
$(window).on("hashchange", function () {
offsetSubmenu();
});
window.setTimeout(function() {
offsetSubmenu();
}, 1);
您会看到代码在加载页面时执行一次,并且每当url中的哈希值发生更改时都会执行。它到目前为止工作。问题是哈希不会改变。例如,当你点击第一个Hashlink时,滚动然后再次点击该链接哈希不会改变,所以windowscroll跳转到锚点而没有子菜单的偏移量。
clicklistener不起作用,因为在浏览器跳转到锚点之前执行$("a").click(..)
。
当主题标签没有改变时,我知道如何处理锚点的偏移量吗?
答案 0 :(得分:0)
如果在浏览器跳转到锚点之前执行$("a").click(...)
,则向offsetMenu调用添加一个小延迟,以便在跳转后执行。类似的东西:
setTimeout(offsetSubmenu, 1)
(与第一次执行offsetSubmenu的方式相同)