如何使用Javascript更新标签中的hashchange网址

问题描述:

我想让我的网页显示URL中的当前标签,请记住我还在学习,所以我的编码技能不是最大的。我通常会为此使用PHP,但我被要求坚持使用Javascript/JQuery。如何使用Javascript更新标签中的hashchange网址

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

这是我的指数位:

<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> 

这是我的脚本:

$(document).ready(function(){ 
    $("#content").load("pages/first.html"); 
}); 

$("li").find('a').click(function(){ 
    var page = $(this).attr('href'); 
    $("#content").load(page); 
    return false; 
}); 

理想我宁愿不要让所有的内容撵到一个页面。我已经检查了许多类似的问题/视频,但是我找不到缺失的位。

我的问题是我该如何编写一个脚本来显示URL上的当前选项卡。

+0

将使用'iframe'而不是'div' –

+0

感谢您的建议最简单的方法,我宁愿坚持到div解决方案已经有效,我只想用URL位来加强它。 –

+0

呃......你看,有一种方法可以做到这一点:让这些页面看起来一样,但使标签不同。问题是,它不那么动态,因为您必须加载所有您想要查看的页面,而不仅仅是一个文本。如果你想使URL栏显示页面的URL,我很抱歉,但这是不可能的。如果您希望脚本更改URL,它将重新加载页面,并且不会看到选项卡或其他任何内容。没有选择,它是如何工作的。 –

这里可以使用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

+0

虽然这与视频中的解决方案几乎完全相同,我描述的最终目标是增强我从其他文件夹动态加载的初始状态,如使用“find”遍历并在#content div中加载页面的脚本。换句话说,我的脚本需要增强类似于剪辑的东西。 –

+0

,因为我相信使用ajax,我从另一个页面或文件夹中调用我的主页中的适当的值,具有良好的结构。那么最好的做法是使用带有ID的不同页面并在加载主页面后调用它。在这里,我将两个html文件都移动到“df”文件夹,然后您可以将“#first”中的“href”更改为“#df/first”和“#second”中的#df/second。那么它也可以工作。 –

+0

或者你可以使用php“include”标签和“if”条件。那么它也会工作。 –