document.location.hash不更新URL

时间:2015-05-07 13:25:05

标签: javascript jquery html ajax

我有以下脚本在页面中的不同DIV之间切换(显示/隐藏)(在下面的输入框中表示=)

但是当我在不同的DIV之间切换时,这不会更新URL字符串。例如,如果我转到example.com/#david-guetta它会加载div id = david-guetta onload,但是当我单击div id = xx的链接时,它会切换DIV的可见性,但不会将url字符串更新为是example.com/#xx

我一直在玩这个部分(document.location.hash.split('#')。last());并尝试与document.url或document.href不同的组合,没有运气。当然,我对JS的了解非常有限。

谢谢你的帮助!

<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.7/prototype.js" type="text/javascript" charset="utf-8">
</script>
<script id="domloaded" type="text/javascript">
document.observe('dom:loaded', function(evt){
    var boxes = $$('#all, #david-guetta, #xx, #zx, #djf').invoke('hide');
    var target = (document.location.hash.split('#').last());
    if(!!target && $(target)){
      $(target).show(){
          var string = document.url
      };
    }
    $('controls').on('click', 'a', function(evt, elm){
      evt.stop();
      var link = elm.href.split('#').last();
      if(link && $(link)){
        boxes.invoke('hide');
        $(link).show(); 
      }
    });
});
</script>

1 个答案:

答案 0 :(得分:0)

如果您的JS知识有限,可以考虑坚持使用现有的lib而不是编写自己的lib。

例如,尝试jQuery-hashchange

这里是example

我认为这正是你想要的行为