单击具有固定标题的锚点时设置偏移量

时间:2015-01-09 15:18:05

标签: javascript jquery html css html5

我知道这个问题已经完成了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(..)

当主题标签没有改变时,我知道如何处理锚点的偏移量吗?

1 个答案:

答案 0 :(得分:0)

如果在浏览器跳转到锚点之前执行$("a").click(...),则向offsetMenu调用添加一个小延迟,以便在跳转后执行。类似的东西:

setTimeout(offsetSubmenu, 1)

(与第一次执行offsetSubmenu的方式相同)