如何用另一个响应替换窗口的URL哈希?

时间:2012-07-21 00:23:37

标签: javascript jquery hash replace attr

我正在尝试使用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”解决方案来解决这个问题。

2 个答案:

答案 0 :(得分:99)

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

window.location.hash = '#food';

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

Reference

答案 1 :(得分:22)

您可能更喜欢this question的答案。

不同之处在于,history.replaceState()不会滚动到锚点,只能在导航栏中替换它。它受到所有主流浏览器source的支持。

history.replaceState(undefined, undefined, "#hash_value")