jQuery中window.location之后,标记ID不起作用

时间:2018-12-06 22:54:29

标签: jquery

我正在尝试重定向浏览器,并在最后添加一个包含元素ID的哈希。然后,在它加载了哈希之后,我想根据哈希中传递的ID处理页面。但是,每当我尝试以$('#'。newHash)或document.getElementById(newHash)的形式获取ID时,它都会以未定义的形式返回。

这是我的代码:

<script type="text/javascript">
  if(!document.location.hash && document.location.hash != "#") {
    jQuery.ajax({
      url: 'index.php',
      type: 'get',
      data: 'inMain=1',
      success: function(results){
        document.getElementById('mainBody').innerHTML = results;
        document.getElementById('mainHeader').innerHTML = 'Dashboard';
      }
    });
  }

  $(document).ready(function() {
    // check current window location
    var url = $(location).attr('href');
    // var hash_id = url.substring(url.indexOf('#') + 1);
    hash_id = document.location.hash;
    alert(document.location.hash.length);

    if (document.location.hash.length > 1) {
      activeHash = document.location.hash;
      test = document.getElementById(activeHash);
      alert("This: " + $('#' + activeHash.href) + " or This" + document.getElementById(activeHash).href);
    }

    $(function(){
      //Handle click events from your selector
      $(document.body).on("click", "[id^=navLink]", function(e) {
        e.preventDefault();
        newHash = "go" + this.id;
        window.location = "#" + newHash;
      });
    });
  });
</script>

URL为http://server.com/index.php#destinationId,HTML看起来像这样:

<a id="destinationId" href="/somepage.php">Some Page</a>

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,经过一些调整,我发现document.getElementById(activeHash)可以工作,但是$('#'+ activeHash)不能。