4

我的问题与此类似,但没有一个答案能解决我的问题: 使用 JQuery preventDefault(),但仍将路径添加到 URL

当用户单击片段链接时,我需要删除跳转到片段的默认行为,但仍将片段添加到 URL。此代码(取自链接)将触发动画,然后将片段添加到 URL。然而,片段然后被导航到,我的情况是我的网站。

$("#login_link").click(function (e) {
    e.preventDefault();
    $("#login").animate({ 'margin-top': 0 }, 600, 'linear', function(){  window.location.hash =     $(this).attr('href'); });

});
4

2 回答 2

8

通过更新哈希location.href,浏览器会自动导航到指针。e.preventDefault()仅取消事件的默认行为,它不会影响其他哈希更改方法,即使它们是从同一事件侦听器中调用的。

您可以使用history.replaceStatehistory.pushState更改哈希而不跳转:

// Replaces the current history entry
history.replaceState(null, '', '#newhash');
于 2012-03-20T17:25:40.270 回答
0

您正在阻止login_link触发元素的默认处理程序,但您是专门设置window.location.hash的,这将导致导航发生。你真的有一个名为你在哈希中设置的东西的锚吗?如果不是,您能否描述一下当它不存在时它如何破坏您的网站以“导航”到页面上的锚点?通常这不会导致问题。

于 2012-03-20T17:26:38.150 回答