我已经使用jQuery创建了一个标签界面来显示/隐藏内容。
我希望能够链接到特定标签,并允许用户为他们所在的当前标签添加书签。
当我为每个包含div使用ID时,我可以通过从click事件中删除return false;
来实现此目的,但这会导致页面跳到包含该选项卡的div。
有没有办法确保网址包含地址的#部分,但是会阻止网页跳过?还有另一种方法可以解决我尚未遇到的问题吗?
//Get all containers with tab content
var tabContainers = $("div.tab");
//Get value of # from URL
if (window.location.hash) {
//if there's a # display the relevant tab
$(tabContainers).hide().filter(window.location.hash).show();
} else {
//Show the first tab
$(tabContainers).hide().filter(":first").show();
}
$("ul#tabNav a").click( function () {
//Hide all tab content then display the current
$(tabContainers).hide().filter(this.hash).show();
//prevent page from skipping but also prevents # from appearing in address bar
return false;
});
<div id="tabNavContainer">
<ul id="tabNav">
<li id="tab1"> <a href="#a">Course essentials</a> </li>
<li id="tab2"> <a href="#b">Course details</a> </li>
<li id="tab3"> <a href="#c">Next steps</a> </li>
</ul>
</div>
<div class="tab" id="a">
<h3>TAB A</h3>
</div>
<div class="tab" id="b">
<h3>TAB B</h3>
</div>
<div class="tab" id="c">
<h3>TAB C</h3>
</div>
非常感谢任何帮助。
答案 0 :(得分:0)
您可以设置window.location.hash
以及阅读它:
$("ul#tabNav a").click( function () {
//Hide all tab content then display the current
$(tabContainers).hide().filter(this.hash).show();
window.location.hash = this.hash;
//prevent page from skipping but also prevents # from appearing in address bar
return false;
});
请注意,这会在浏览器历史记录中添加一个页面,允许用户使用后退和前进按钮来更改哈希值。理想情况下,您还应该考虑处理它。