我的问题与此类似,但没有一个答案可以解决我的问题: Use JQuery preventDefault(), but still add the path to the URL
当用户点击片段链接时,我需要删除跳转到片段的默认行为,但仍然将片段添加到URL。此代码(取自链接)将触发动画,然后将片段添加到URL。然而,片段然后导航到,我的情况下我的网站。
$("#login_link").click(function (e) {
e.preventDefault();
$("#login").animate({ 'margin-top': 0 }, 600, 'linear', function(){ window.location.hash = $(this).attr('href'); });
});
答案 0 :(得分:8)
通过location.href
更新哈希,浏览器会自动导航到指针。 e.preventDefault()
仅取消事件的默认行为,不影响其他哈希更改方法,即使它们是从同一事件侦听器中调用的。
您可以使用history.replaceState
或history.pushState
更改哈希值而不跳转:
// Replaces the current history entry
history.replaceState(null, '', '#newhash');
答案 1 :(得分:0)
您阻止login_link
元素的默认处理程序触发,但您专门设置window.location.hash
,这将导致导航发生。你真的有一个名为你在哈希中设置的东西的锚吗?如果没有,你能描述一下当你的网站不存在时,它如何破坏你的网站以“导航”到页面上的一个锚点?通常这不会导致问题。