Javascript 当锚点位于URL中时,避免页面滚动/跳转

Javascript 当锚点位于URL中时,避免页面滚动/跳转,javascript,jquery,anchor,Javascript,Jquery,Anchor,可能重复: 我根据URL中的哈希值显示一个div,但我希望避免页面跳转到具有该特定ID的div的位置 我只有当页面直接通过URL中的散列进行导航时才会出现问题,比如说,如果有人在页面上做了图书标记 例如,我有一个url domain.com/page.html#myitem-1 ID=myitem-1将显示,但页面会跳转到我不想要的div的位置 我试图使用scrollTop(0)将窗口位置强制回到顶部,但似乎在锚点跳转发生之前调用它没有任何效果 示例代码: $(document).read

可能重复:

我根据URL中的哈希值显示一个div,但我希望避免页面跳转到具有该特定ID的div的位置

我只有当页面直接通过URL中的散列进行导航时才会出现问题,比如说,如果有人在页面上做了图书标记

例如,我有一个url domain.com/page.html#myitem-1

ID=myitem-1将显示,但页面会跳转到我不想要的div的位置

我试图使用scrollTop(0)将窗口位置强制回到顶部,但似乎在锚点跳转发生之前调用它没有任何效果

示例代码:

  $(document).ready(function() {
    $('.glossary-term').hide();
    $(window.location.hash).show();

    $(window).scrollTop(0);

});
我能让这个scrollTop工作的唯一方法是将它置于一个持续时间为1的setTimeOut中,但这看起来有点像黑客。还有其他建议吗

谢谢


B

好吧,如果只是为了显示div而使用锚定的内部机制,那么您可以随时更改(或删除)“name”属性,这样浏览器就不会直接找到它,也不会尝试滚动;)


否则,试试看

谢谢,伙计们认为点击向上投票就足够了。一些没有真正帮助的答案我是不是忽略了它们?我通常会回复一条评论,但没有跟进。再次感谢。嗨,本,你是怎么解决的?我有同样的问题谢谢你的回复,实际上没有名字标签,它跳到那里是因为DIV有它的ID。我想严格地说,它不是这样的锚,而是同样的功能。我想保持ID的地方,因为这意味着它退化以及当JS被禁用。这个链接看起来和我用setTimeOut尝试的想法一样,但确实有点像黑客,也许不是唯一的方法。如果你设置了一个锚,浏览器会尝试跟随它,所以你必须设法破解它。。你试过在页面加载时重置你的锚吗?与“window.location.hash=”“;”类似或'window.location.hash=“top”;'你试过在页面加载时重置你的锚吗?与“window.location.hash=”“;”类似或'window.location.hash=“top”;'$(document).ready(function(){$('.glossary term').hide();$(window.location.hash.show();window.location.hash=”“;$(window.scrollTop(0);});谢谢Majki,这确实有效,但问题是URL会变成不可书签的,所以我想我会将scrollTop包装成一个setTimeOut。但会将此标记为已回答,因为上面的评论和回答中的链接都有帮助。