Jam*_*esG 1 jquery jquery-tabs
我有一个基本的jQuery标签系统:
$(document).ready(function(){
$('#tabs div.jdiv').hide();
$('#tabs div.jdiv:first').fadeIn("slow");
$('#tabs ul.jdiv li:first').addClass('active');
$('#tabs ul.jdiv li a').click(function(){
$('#tabs ul.jdiv li').removeClass('active');
$(this).parent().addClass('active');
var currentTab = $(this).attr('href');
$('#tabs div.jdiv').hide();
$(currentTab).fadeIn("slow");
return false;
});
});
<div id="tabs" style="position:relative; ">
<ul class="jdiv">
<li><a href="#current-points">Current Points</a></li>
<li><a href="#my-details">My Details</a></li>
<li><a href="#prizes">Prizes</a></li>
<li><a href="#basket">Your sack</a></li>
<li><a href="#order-history">Order History</a></li>
</ul>
<div id="current-points" class="jdiv" style="position:relative;">
<?php include('current-points.php');?>
</div>
Run Code Online (Sandbox Code Playgroud)
等等....
我的问题是,我打算在其中一个页面中使用另一组jQuery选项卡,这不是问题,但是当他们点击链接或刷新页面时,是否可以保留在同一个选项卡上?在父级或子级选项卡上?
谢谢!
您可以使用哈希标记来唯一标识每个选项卡,这样http://example.com/yourpage.html#current-points您就可以转到current-points选项卡,然后http://example.com/yourpage.html#my-details转到my-details选项卡.您可以通过分配来设置哈希值location.hash,当然您可以在页面加载时读取该哈希值.这也具有巨大的优势,您的用户可以为他们想要的标签添加书签.如果选项卡中有选项卡,则可以在哈希中使用路径(这样#first/foo可以转到first选项卡及其foo子选项卡; #first/bar将您带到first选项卡及其bar子选项卡).
这是一个非常基本的例子(没有子标签,但你明白了):
HTML:
<ul id="nav">
<li><a href="#first">First</a></li>
<li><a href="#second">Second</a></li>
<li><a href="#third">Third</a></li>
</ul>
<div class="tab" id="tab-first">This is first</div>
<div class="tab" id="tab-second">This is second</div>
<div class="tab" id="tab-third">This is third</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
jQuery(function($) {
$("<p>").html("Loaded at " + new Date()).appendTo(
document.body
);
showTab(location.hash || "first");
$("#nav a").click(function() {
var hash = this.getAttribute("href");
if (hash.substring(0, 1) === "#") {
hash = hash.substring(1);
}
location.hash = hash;
showTab(hash);
return false;
});
function showTab(hash) {
$("div.tab").hide();
$("#tab-" + hash).show();
}
});
Run Code Online (Sandbox Code Playgroud)
或者(或结合),您可以在更改选项卡时设置cookie,并在页面加载时检查cookie以选择他们选择的最后一个选项卡.