我在同一页面上有一组标签链接和标签内容窗格,每个窗格都有不同数量的标签 .
<div class="tab-content-group1">
<div class="tabs-group">
<a class="tab1">Tab 1</a>
<a class="tab2">Tab 2</a>
<a class="tab3">Tab 3</a>
</div>
<div class="tab-pane-group">
<div class="tab-pane1">Tab Content 1</div>
<div class="tab-pane2">Tab Content 2</div>
<div class="tab-pane3">Tab Content 3</div>
</div>
</div>
<div class="tab-content-group2">
<div class="tabs-group">
<a class="tab4">Tab 4</a>
<a class="tab5">Tab 5</a>
<a class="tab6">Tab 6</a>
<a class="tab7">Tab 7</a>
</div>
<div class="tab-pane-group">
<div class="tab-pane4">Tab Content 4</div>
<div class="tab-pane5">Tab Content 5</div>
<div class="tab-pane6">Tab Content 6</div>
<div class="tab-pane7">Tab Content 7</div>
</div>
</div>
<div class="tab-content-group3">
<div class="tabs-group">
<a class="tab8">Tab 8</a>
</div>
<div class="tab-pane-group">
<div class="tab-pane8">Tab Content 8</div>
</div>
</div>
其中,在每个选项卡组中,第一个选项卡链接应该单击时切换第一个选项卡内容,第二个选项卡链接slideToggles第二个内容,3和4相同 . 对于其他选项卡组重复此操作 .
要在单击选项卡时滑动切换内容窗格,我一直在使用:
$(".tab1").click(function() {
$("tab1").slideToggle("slow", function() {});
});
$(".tab2").click(function() {
$("tab2").slideToggle("slow", function() {});
});
$(".tab3").click(function() {
$("tab3").slideToggle("slow", function() {});
});
...等每个标签 .
Question 1) 是否有更有效的方法来编写代码,因此每次添加新选项卡或新选项卡组时,每个选项卡和窗格都不需要对所有内容进行硬编码(例如,tab1,tab2,tab-pane1等) .
(我正在考虑“确定在tab-content-group(第1个,第2个第3个等)中单击哪个选项卡然后找到下一个tab-pane-group和slideToggle在那里的相应选项卡窗格(第1个选项卡)切换第一个选项卡窗格,第二个选项卡切换第二个选项卡窗格等) - 但我不知道如何使用JQuery实现这一点!)
请注意我无法更改HTML结构 .
Question 2) 使这些slideToggles行为的最佳方法是,让每个组成员知道彼此的切换状态,以确保在打开新标签时关闭所有打开的标签页 .
非常感谢任何建议 .
2 回答
使用HTML结构,您可以在
.tab-pane-group
中使用每个a
元素的索引到slideToggle
div
如果你还想在其他
.tab-pane-group
中隐藏div,你可以使用它Question 1)
是的,您可以按
$('.tab1, .tab2, .tab3, ...')
选择所有选项卡并使用$(this)
:或者选择以
.tab
开头的所有元素:$('[class^=tab]')
Question 2)
隐藏所有选项卡,然后只打开单击的选项卡