JQuery preventDefault(),但仍然在不导航到片段的情况下将片段路径添加到URL



我的问题与此类似,但没有一个答案能解决我的问题:使用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'); });
});

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

您可以使用history.replaceStatehistory.pushState来更改哈希,而无需跳转:

// Replaces the current history entry
history.replaceState(null, '', '#newhash');

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

相关内容

  • 没有找到相关文章

最新更新