jquery 从外部访问时切换选项卡的活动状态 link
jquery toggle a tab's active state when visited from external link
我有一个包含 3 个选项卡的页面。在任何时候,都有 2 个选项卡处于隐藏状态。有一个子导航菜单来处理此 show/hide 功能。当您单击子导航上的 link 时,该选项卡打开并且子导航显示该选项卡 link 处于活动状态(通过不同的字体颜色)。伟大的!但是...
问题
但是,当我从外部 link(如“http://example.com#subDivTab2”)访问该选项卡时,它会转到该选项卡并显示它,但它不会触发该活动状态。子导航中 link 的字体颜色没有改变。如果在同一页面上,它应该模拟打开选项卡并显示字体颜色变化。
TAB 开关代码
$('a.subDivSwitchLink').click(function (e) {
var $this = $(this),
containerSelector = $this.attr('href'),
$links = $('a.subDivSwitchLink');
e.preventDefault();
$('div.subDivSwitch').not(containerSelector).hide();
$(containerSelector).show();
//active tab state
$links.not($this).toggleClass('subTitleActive', false);
$this.toggleClass('subTitleActive', true);
});
活动状态触发器(在同一页上时)
这就是触发选项卡打开的原因
var target = '#'+'subDivTab1';
$('a[href="'+target+'"].subDivSwitchLink').click();
外部 LINK 选项卡打开代码
这是触发从外部打开选项卡的原因 link
var hash = $.trim(window.location.hash);
$('a[href="'+hash+'"].subDivSwitchLink').click();
ATTEMPT
我尝试了以下方法,但它不起作用
var hash = ($.trim(window.location.hash)+'subDivTab1');
$('a[href="'+hash+'"].subDivSwitchLink').click();
FIDDLE
减少大小写fiddle以帮助
http://jsfiddle.net/zuhloobie/m1fua9jp/
当您使用 window.location.hash
检测当前选项卡时,您走在了正确的轨道上。只需像您一样使用 jQuery 变量来触发 类:
var hash = $.trim(window.location.hash);
if(!hash){
hash = $('a.subDivSwitchLink:first').attr('href');
}
var activeTab = $('a[href="'+hash+'"].subDivSwitchLink');
$('a.subDivSwitchLink').toggleClass('subTitleActive', false);
$('a.subDivSwitchLink')
.each(function(){
$($(this).attr('href')).hide();
});
activeTab.toggleClass('subTitleActive', true);
$(hash).show();
我有一个包含 3 个选项卡的页面。在任何时候,都有 2 个选项卡处于隐藏状态。有一个子导航菜单来处理此 show/hide 功能。当您单击子导航上的 link 时,该选项卡打开并且子导航显示该选项卡 link 处于活动状态(通过不同的字体颜色)。伟大的!但是...
问题
但是,当我从外部 link(如“http://example.com#subDivTab2”)访问该选项卡时,它会转到该选项卡并显示它,但它不会触发该活动状态。子导航中 link 的字体颜色没有改变。如果在同一页面上,它应该模拟打开选项卡并显示字体颜色变化。
TAB 开关代码
$('a.subDivSwitchLink').click(function (e) {
var $this = $(this),
containerSelector = $this.attr('href'),
$links = $('a.subDivSwitchLink');
e.preventDefault();
$('div.subDivSwitch').not(containerSelector).hide();
$(containerSelector).show();
//active tab state
$links.not($this).toggleClass('subTitleActive', false);
$this.toggleClass('subTitleActive', true);
});
活动状态触发器(在同一页上时)
这就是触发选项卡打开的原因
var target = '#'+'subDivTab1';
$('a[href="'+target+'"].subDivSwitchLink').click();
外部 LINK 选项卡打开代码
这是触发从外部打开选项卡的原因 link
var hash = $.trim(window.location.hash);
$('a[href="'+hash+'"].subDivSwitchLink').click();
ATTEMPT
我尝试了以下方法,但它不起作用
var hash = ($.trim(window.location.hash)+'subDivTab1');
$('a[href="'+hash+'"].subDivSwitchLink').click();
FIDDLE
减少大小写fiddle以帮助
http://jsfiddle.net/zuhloobie/m1fua9jp/
当您使用 window.location.hash
检测当前选项卡时,您走在了正确的轨道上。只需像您一样使用 jQuery 变量来触发 类:
var hash = $.trim(window.location.hash);
if(!hash){
hash = $('a.subDivSwitchLink:first').attr('href');
}
var activeTab = $('a[href="'+hash+'"].subDivSwitchLink');
$('a.subDivSwitchLink').toggleClass('subTitleActive', false);
$('a.subDivSwitchLink')
.each(function(){
$($(this).attr('href')).hide();
});
activeTab.toggleClass('subTitleActive', true);
$(hash).show();