我目前正在使用Zurb Foundation Tabs进行小型项目。选项卡工作得很好,但在尝试将目标指向特定选项卡时,我遇到了问题。我搜索并找到了一种获取此方法的方法,但在修改并将其应用于我的示例时,它无法正常工作。我收到错误:“无法识别的表达式:: nth-child”。如何正确地链接到Foundation 5中的特定选项卡? DEMO
JS / JQuery for url target
<script>
window.navigateTab = function (event) {
var url = $(event.target).attr('href');
var target = url.split('#')[1];
if (target.substr(0, 5) == 'panel') {
var state = {
tab: target.substr(5)
};
selectTab("tabs_edit", state.tab); //<-- change the tab
history.pushState(state, null, url); //<-- change the url
event.preventDefault();
}
}
window.onpopstate = function (event) {
if (event.state != null) {
selectTab("tabs_edit", event.state.tab); //<-- change the tab
}
};
function selectTab(id, tab) {
// activate only the right tab:
var tab = $("#" + id + "> dl > dd:nth-child(" + tab + ")");
console.log(tab);
var a = $("a", tab);
target = $('#' + a.attr("href").split('#')[1]);
siblings = tab.siblings();
settings = tab.closest('[data-tab]').data('tab-init');
tab.addClass(settings.active_class);
siblings.removeClass(settings.active_class);
target.siblings().removeClass(settings.active_class).end().addClass(settings.active_class);
}
$('#menu a').on("click", navigateTab);
$(document).foundation();
</script>
HTML
//Target an specific tab:
<ul id="menu" class="dropdown">
<li><a href="#panel1a">Tab 1</a></li>
<li><a href="#panel2a">Tab 2</a></li>
<li><a href="#panel3a">Tab 3</a></li>
</ul>
//Actual Tabs
<dl id="tabs_edit" class="tabs vertical" data-tab>
<dd class="active"><a href="#panel1a" onclick="navigateTab(event)">Tab 1</a></dd>
<dd><a href="#panel2a" href="#panel2a" onclick="navigateTab(event)">Tab 2</a></dd>
<dd><a href="#panel3a" href="#panel3a" onclick="navigateTab(event)">Tab 3</a></dd>
<dd><a href="#panel4a" href="#panel4a" onclick="navigateTab(event)">Tab 4</a></dd>
</dl>
<div class="tabs-content vertical">
<div class="content active" id="panel1a">
<p>Panel 1 content goes here.</p>
</div>
<div class="content" id="panel2a">
<p>Panel 2 content goes here.</p>
</div>
<div class="content" id="panel3a">
<p>Panel 3 content goes here.</p>
</div>
<div class="content" id="panel4a">
<p>Panel 4 content goes here.</p>
</div>
</div>
答案 0 :(得分:4)
我知道这篇文章已经过时了,但在阅读了基础5文本之后,他们又添加了可在不同页面上运行的深层链接功能
只需添加:
数据的选项=&#34; deep_linking:真&#34;
示例:
<dl class="tabs vertical" data-tab data-options="deep_linking:true">
这甚至适用于链接到它的不同页面!
对于其他页面上的链接,我刚刚调用了panelid
示例:
<a href="product-line.php#panel12">
答案 1 :(得分:3)
深度链接是基金会5没有包含在基金会4中的内容。我做了一个不那么聪明但完成工作的修复:
if(window.location.hash){
$('dl.tabs dd a').each(function(){
var hash = '#' + $(this).attr('href').split('#')[1];
if(hash == window.location.hash){
$(this).click();
}
});
}