我有一个简单的选项卡式界面,可以在隐藏的div之间切换,并在单击时在相应的选项卡上设置活动状态。
当有人访问标签的网址时,它只会显示该标签的内容,这很好。
如果您直接访问该网址,我还需要设置该标签的有效状态。
我有网址,例如abc.com/index.html#gallery,abc.com/index.html#recipes等。
因此,如果您访问abc.com/index.html#recipes,则会突出显示配方选项卡。
我的代码在下面,提前感谢任何建议!
$(function () {
var app = {
vars: {
gallery: $('#gallery'),
tabContent: $('.tabs .tabContent'),
nav: $('.tabs nav a')
},
events: function () {
//tabs
app.vars.nav.on('click', function (e) {
var thisHash = $(this).attr('href');
app.setHash(thisHash);
e.preventDefault();
$('nav a').removeClass('active');
$(this).addClass('active');
});
//hashchange
$(window).on('hashchange', function() {
app.checkHash();
});
},
checkHash: function () {
var hash = app.getHash();
if (hash == '') {
app.vars.tabContent.hide();
app.vars.gallery.show();
} else {
app.goTo(hash);
}
},
getHash: function () {
return window.location.hash;
},
setHash: function (id) {
window.location.hash = id;
},
goTo: function (id) {
app.vars.tabContent.hide();
$(id).fadeIn();
}
}
app.events();
app.checkHash();
});
答案 0 :(得分:0)
您需要修改goTo
函数以在相关选项卡上设置active
类。试试这个:
goTo: function (id) {
app.vars.tabContent.hide();
$(id).fadeIn();
$('nav a[href="' + id + '"]').addClass('active').siblings().removeClass('active');
}