如何根据页面url显示或隐藏选项卡
How to show or hide tab based on the page url
这是我的代码来翻转标签和标签下的内容:
$(function () {
$('#tabs li a').click(function (e) {
e.preventDefault();
$('#tabs li, #content .current').removeClass('current');
$(this).parent().addClass('current');
var currentTab = $(this).attr('href');
$(currentTab).addClass('current');
});
});
我有下面的代码,计算出用户在网站的哪个部分:
$(window).load(function () {
var homeTab = ["home1", "home2", "home3", "home4", "home5"];
var recruitingTab = ["rec1", "rec2", "rec3", "rec4", "rec5"];
var adminTab = ["adm1", "adm2", "adm3", "adm4"];
var pathName = getPageName(window.location.pathname);
alert(pathName);
if ($.inArray(pathName, homeTab) != -1) {
alert("at home tab");
}
if ($.inArray(pathName, recruitingTab) != -1) {
alert("at recruiting tab");
}
if ($.inArray(pathName, adminTab) != -1) {
alert("at admin tab");
$("#tab li#tHome").removeClass('current');
$("#tab li#tRecruiting").removeClass('current');
$("#tab li#tAdminControls").addClass('current');
}
});
如何将原始代码添加到文档中。准备好实现上述功能吗?
编辑:我更新了上面的代码,看看它是否有效,但它不工作。:/
使用位置散列要容易得多:
http://__someurl__#menustate
然后您可以将路径与菜单状态解耦,这样您就不再需要跟踪哪个路径转换到哪个菜单状态。
var menustate = document.location.hash;
$('.' + menustate).addClass('active');
你可以使用任何你想要的url:
www.mysite.com/somepage#recruiting
你可以在加载时检查哈希值,你也可以改变它,并使其在单个页面中可书签
您可以尝试为addClass()
和removeClass()
使用多个选择器,如
$(function () {
$('#tabs li a').click(function (e) {
e.preventDefault();
$('#tabs li, #content .current').removeClass('current');
$(this).parent().addClass('current');
var currentTab = $(this).attr('href');
$(currentTab).addClass('current');
});
var homeTab = ["home1", "home2", "home3", "home4", "home5"];
var recruitingTab = ["rec1", "rec2", "rec3", "rec4", "rec5"];
var adminTab = ["adm1", "adm2", "adm3", "adm4"];
var pathName = getPageName(window.location.pathname);
//remove all current class from each tab
$("#tHome,#tRecruiting,#tAdminControls,#home,#recruit,#admin").removeClass('current');
if ($.inArray(pathName, homeTab) != -1) {
//alert("at home tab");
$("#tHome,#home").addClass('current'); // show home only
}
if ($.inArray(pathName, recruitingTab) != -1) {
//alert("at recruiting tab");
$("#tRecruiting,#recruit").addClass('current'); // show recruiting tab only
}
if ($.inArray(pathName, adminTab) != -1) {
//alert("at admin tab");
$("#tAdminControls,#admin").addClass('current'); // show admin tab only
}
});
我是这样解决的:
$(function () {
$('#tabs li a').click(function (e) {
e.preventDefault();
$('#tabs li, #content .current').removeClass('current');
$(this).parent().addClass('current');
var currentTab = $(this).attr('href');
$(currentTab).addClass('current');
});
var homeTab = ["home1", "home2", "home3", "home4", "home5"];
var recruitingTab = ["rec1", "rec2", "rec3", "rec4", "rec5"];
var adminTab = ["adm1", "adm2", "adm3", "adm4"];
var pathName = getPageName(window.location.pathname);
//alert(pathName);
if ($.inArray(pathName, homeTab) != -1) {
//alert("at home tab"); //by default HOME tab and it's content is always shown
}
if ($.inArray(pathName, recruitingTab) != -1) {
//alert("at recruiting tab");
$("#tHome").removeClass('current'); //tab
$("#tRecruiting").addClass('current');
$("#tAdminControls").removeClass('current');
$("#home").removeClass('current'); //content
$("#recruit").addClass('current');
$("#admin").removeClass('current');
}
if ($.inArray(pathName, adminTab) != -1) {
//alert("at admin tab");
$("#tHome").removeClass('current'); //tab
$("#tRecruiting").removeClass('current');
$("#tAdminControls").addClass('current');
$("#home").removeClass('current'); //content
$("#recruit").removeClass('current');
$("#admin").addClass('current');
}
});
请告诉我是否有更有效的方法来做这件事。
相关文章:
- jQuery无法在IE9中隐藏选项
- 通过单击选项卡而不是单击网站的任何部分来隐藏选项卡
- jQuery 隐藏选项元素
- Javascript变量在IE中不起作用||用Javascript隐藏选项
- JQuery隐藏选项没有'我在IE 11中不工作
- jquery动态地隐藏选项卡
- 在 IE 中隐藏选项标记
- 使用 jQuery inArray 并隐藏选项值
- 没有内容时隐藏选项卡,单击选项卡后加载内容
- 循环浏览选项,包括隐藏选项
- RadTabStrip-隐藏选项卡客户端
- 关于django模板中表单字段值的动态隐藏/取消隐藏选项卡
- 将隐藏选项卡中的HTML5验证事件传递给JavaScript函数
- Bootstrap隐藏选项卡中的选项卡按钮
- UserVoice小部件隐藏选项卡
- 使用javascript选择另一个选项后,循环隐藏选项不起作用
- DIV的显示和隐藏选项(需要修改)
- MSCRM 2011基于statcode字段值的隐藏选项卡
- 使用jquery使用文本框取消隐藏选项卡会取消隐藏错误的部分
- 试图使响应导航在每个页面中默认隐藏选项