如何使用Javascript在选项卡中使用hashchange更新url

时间:2017-09-20 08:52:51

标签: javascript jquery html tabs

我想让我的页面显示网址中的当前标签,请记住我还在学习,所以我的编码技巧并不是最好的。我通常会使用PHP,但我被要求坚持使用Javascript / JQuery。

到目前为止,我已设法通过使用简单的脚本让我的标签在div中动态显示内容。

这是我的索引位:

byte[]

这是我的剧本:

<div class="row">
      <div class="col-md-3 col-lg-3">
        <div class="custom-left-tabs -text--uppercase">
          <div class="custom-left-tabs-btn hidden-lg hidden-md">
            <a href="#lefttabs" aria-expanded="false" data-toggle="collapse">Menu<i class="fa fa-angle-down"></i></a>
          </div>
          <ul id="lefttabs" class="list-unstyled collapse">
            <li class="sub-heading">Getting Started</li>
            <li><a data-toggle="tab" href="pages/first.html">First</a></li>
            <li><a data-toggle="tab" href="pages/second.html">Second</a></li>
          </ul>
        </div>
      </div>
      <div id="content" class="tab-content col-lg-9 -bg--white -padding--m">
      </div>
    </div>

理想情况下,我不希望将所有内容都放在一页中。我检查了很多类似的问题/视频,但我找不到丢失的内容。

我的问题是我应该如何编写一个脚本来显示URL上的当前标签。

1 个答案:

答案 0 :(得分:2)

这里可以使用iframe运行良好,  但正如你所说,我已经尝试过了。这是我的代码。 reference与之前相同。

现在我在这里展示代码 以这种方式使用js:

<script src="jquery.min.1.4.js"></script>
<script src="jquery.blockUI.js"></script>
<script>
     $(function(){
         $("#tabs a").click(function(e){
              $("#tabs li").removeClass("on");
              $(this).parent("li"). addClass("on");
              var page = this.hash.substr(1);
              $("#content_wrapper").block();
              $.get(page+".html",function(html){
                   $("#content").html(html);
                   $("#content_wrapper").unblock();
              });
         });
     });
</script>

和带有“<div>”标记的HTML代码。

<ul id="tabs">
    <li><a href="#first">TAb1</a></li>
    <li><a href="#second">TAb2</a></li>
</ul>
<div id="content_wrapper">
    <div id="content">
    </div>
</div>

我还使用了jquery.min.js和blocjUI.js和css css代码在这里

<style>
ul {
    margin:0px;
    padding:0px;
    overflow:hidden;
}
li {
    float:left;
    list-style:none;
    padding:10px;
    background-color:#333;
    border: 1px solid #ccc;
}
li a {
    color: #FFF;
    text-decoration:none;
    font-family:arial;
}
#content_wrapper {
    width:400px;
    height:300px;
    background-color: #ccc;
    margin: 0px;
    padding:6px;
    overflow: hidden;
}
#content {
    font-family: arial;
}
li.on {
    background-color:#ccc;
}
li.on a {
    color:#333;
}

您将在一个页面中获得两个不同的页面。

Scrren1: first.html shown

屏蔽2: second.html shown