我不知道这是否可以用html完成,但这就是我想要做的。
我使用基金会 tab ,我想通过点击上面的链接导航到任何标签的内容主导航。导航中这些子菜单的内容都在同一页面上。如果您不理解,请告诉我,以便我可以上传图片或其他内容。这是link to it。
答案 0 :(得分:1)
从选项卡中删除活动类
$("#tab1").removeClass("active");
将课程添加到新标签页
$("#tab2").addClass("active");
隐藏第一个面板
$("#panel1").hide();
显示新面板
$("#panel2").show();
答案 1 :(得分:1)
编辑1 :我有时间研究基金会的工作方式。所以我可以提出一个更有教养的解决方案。我最初的想法是模仿点击css级别的项目的效果。
这并不意味着旧的解决方案不起作用。实际上两种解决方案的最终结果相同。我已经在您网站的HTML副本上测试了旧解决方案和新解决方案。
还借此机会补充一些说明。
编辑2 :我已经添加了对更为明显的历史记录的控制权。这意味着代码将更改用户看到的URL并正确处理后退按钮,无需重新加载页面。
你必须这样做:
selectTab
以在它们之间切换。 取决于您选择的解决方案。navigateTab
,它将调用selectTab
,但也会更新浏览器历史记录。所以,让我们首先得到共同的部分:
HTML:
<dl id="LOOK_MY_ID" class="tabs" data-tab>
<dd class="active"><a href="#panel2-1">Tab 1</a></dd>
<dd><a href="#panel2-2">Tab 2</a></dd>
<dd><a href="#panel2-3">Tab 3</a></dd>
<dd><a href="#panel2-4">Tab 4</a></dd>
</dl>
<div class="tabs-content">
<div class="content active" id="panel2-1">
<p>First panel content goes here...</p>
</div>
<div class="content" id="panel2-2">
<p>Second panel content goes here...</p>
</div>
<div class="content" id="panel2-3">
<p>Third panel content goes here...</p>
</div>
<div class="content" id="panel2-4">
<p>Fourth panel content goes here...</p>
</div>
</div>
注意:这是基于Example of Foundation Tabs中提供的HTML。在您的代码中,您可以将id添加到具有类corporation-frame
的div中。
辅助函数的目的是使抽象代码更改浏览器URL时使click事件处理程序更容易。如下所示,我们得到了这个。
JavaScript的:
function navigateTab(event)
{
var url = $(event.target).attr('href');
var target = url.split('#')[1];
if (target.substr(0, 3) == 'tab')
{
var state = {tab: target.substr(3)};
selectTab("LOOK_MY_ID", state.tab); //<-- change the tab
history.pushState(state, null, url); //<-- change the url
event.preventDefault();
}
}
正如您所看到它使用event
,其背后的原因是我们将直接将此函数用作单击事件处理程序。此外,要选择的选项卡和要放置的网址取自已单击的超链接的href
属性。
此技术还允许安全地将click事件处理程序一次性添加到所有链接。
注意:我们正在使用HTML5's History API更改网址。
你需要为你的链接添加一个事件处理程序(Foundation将这些添加到幕后的标签中,我们将模仿你的菜单)。
有两种方法可以添加这些事件处理程序...
方法A)
选择您的锚点并通过JavaScript添加事件处理程序:
$('ul.dropdown a').on("click", navigateTab);
它没有比这简单。
注意:确保使用正确的选择器从菜单中选择超链接。另外,您可能需要(如果您在页面顶部添加脚本),请使用ready
添加此脚本:
$(document).ready(
function()
{
$('ul.dropdown a').on("click", navigateTab);
}
);
方法B)
直接在HTML上添加事件处理程序:
HTML:
<a href="#tab3" onclick="navigateTab(event)">Tab 3</a>
注1 :如果在处理程序上禁用JavaScript不起作用,它将使页面跳转到内容(如果它们可见)。这是没有JavaScript的最佳选择。
在上面的代码中,我们不仅更改了浏览器中的url,而且还在页面的导航历史记录中添加了一个条目......那么,当用户单击后会发生什么?好吧,我们将再次使用HTML5's History API来处理后退按钮。
要处理我们要添加此代码:
window.onpopstate = function(event)
{
selectTab("LOOK_MY_ID", event.state.tab); //<-- change the tab
};
这就是为什么我们不应该更改selectTab
的网址,因为如果我们这样做...我们将无法导航回来!
note :此代码不仅会处理后退按钮,还会处理页面内浏览器历史记录中的任何导航。
函数selectTab
将通过以下方式实现:
JavaScript的:
function selectTab(id, tab)
{
// activate only the right tab:
var tab = $("#" + id + " > dl > dd:nth-child(" + 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);
}
函数selectTab
将通过以下方式实现:
JavaScript的:
function selectTab(id, tab)
{
// activate only the right tab:
$("#" + id + " > dl").children().each
(
function(index, element)
{
if (index == tab)
{
$(element).addClass("active");
}
else
{
$(element).removeClass("active");
}
}
);
// activate only the right content:
$("#" + id + " > div").children().each
(
function(index, element)
{
if (index == tab)
{
$(element).addClass("active");
}
else
{
$(element).removeClass("active");
}
}
);
}
答案 2 :(得分:0)
您可以随时在导航栏上使用点击功能将所需标签的类别设置为“有效”
$("navelement").on("click", function(){
$("#tab_id").addClass("active");
}