[英]Trigger opening of a Zurb Foundation Accordion via URL hash link
[英]URL Target Link Tab - Zurb Foundation Tabs
我目前正在將Zurb Foundation Tabs用於小型項目。 選項卡效果很好,但嘗試將目標網址指向特定選項卡時遇到了麻煩。 我搜索並找到了一種實現此目標的方法,但是在將其修改並應用於我的示例時,該方法不起作用。 我收到錯誤消息:“無法識別的表達式::nth-child”。 如何正確鏈接到Foundation 5中的特定選項卡的鏈接? 演示
目標網址的JS / JQuery
<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>
我知道這篇文章很舊,但是在閱讀了基礎5的更多內容后,他們添加了適用於不同頁面的Deeplinking功能
只需添加:
data-options =“ deep_linking:true”
例:
<dl class="tabs vertical" data-tab data-options="deep_linking:true">
甚至可以在鏈接到它的不同頁面上使用!
對於其他頁面上的鏈接,我只是將其稱為panelid
例:
<a href="product-line.php#panel12">
深層鏈接是Foundation 5所沒有包括的,而Foundation 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();
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.