74

我正在尝试使用 replace 方法更改散列 URL(document.location.hash),但它不起作用。

$(function(){
 var anchor = document.location.hash;
 //this returns me a string value like '#categories'

  $('span').click(function(){

     $(window).attr('url').replace(anchor,'#food');
     //try to change current url.hash '#categories'
     //with another string, I stucked here.
  });

});

我不想更改/刷新页面,我只想替换 URL 而没有任何响应。

注意:我不想用 href="#food" 解决方案来解决这个问题。

4

2 回答 2

138

使用locationwindow.location代替document.location后者是非标准的。

window.location.hash = '#food';

这会将 URL 的哈希替换为您为其设置的值。

参考

于 2012-07-21T00:28:30.547 回答
57

您可能更喜欢这个问题的答案。

不同之处在于history.replaceState()您不滚动到锚点,只需在导航栏中替换它。所有主要浏览器都支持它,source

history.replaceState(undefined, undefined, "#hash_value")
于 2017-04-01T13:13:55.820 回答