jquery切换标签,带有额外的切换function
我有一些标签设置; 这是他们目前的工作:
- 打开页面时隐藏内容
- 在选项卡上单击显示内容(使用切换,以便用户可以显示/隐藏/显示/隐藏内容)
- 激活选项卡在选择时更改颜色
问题:当用户单击其中一个选项卡并显示内容,然后单击其他选项卡时,两组内容都会显示(如累积切换)。
我想进行设置,以便在用户单击选项卡并显示内容,然后单击其他选项卡时,单击的第一个选项卡显示的内容将隐藏。
这是另一个处理类似问题的SO问题,但它不包括我所拥有的活动类代码 – 处理多个切换和有效的JS – http://jsfiddle.net/jHvjD/5/
JQUERY
$(document).ready(function(){ $('.tab_contents').hide(); $('.tab').click(function() { $(this.rel).toggle(); $('#tabs_container > .tabs > li.active') .removeClass('active'); $(this).parent().addClass('active'); $('#tabs_container > .tab_contents_container > div.tab_contents_active') .removeClass('tab_contents_active'); $(this.rel).addClass('tab_contents_active'); }); });
HTML
Option 1 stuff Option 2 stuff
$('.tab_contents').hide(); $('.tab').click(function(){ var target = $(this.rel); $('.tab_contents').not(target).hide(); target.toggle(); $('#tabs_container > .tabs > li.active') .removeClass('active'); $(this).parent().addClass('active'); $('#tabs_container > .tab_contents_container > div.tab_contents_active') .removeClass('tab_contents_active'); $(this.rel).addClass('tab_contents_active'); });
小提琴: http : //jsfiddle.net/GkGyt/2/
为什么这么复杂 – 首先尝试简单:
$('.tab_contents_active') .removeClass('tab_contents_active');
代替
$('#tabs_container > .tab_contents_container > div.tab_contents_active') .removeClass('tab_contents_active');
如果可行(它会),那么你可以优化。
我怀疑第一个代码没有优化,除非你的页面非常复杂,额外的选择只会让它变慢……但它真的取决于你的dom …首先尝试简单的“全部删除”解决方案。
你可以试试这个更简单。
$(document).ready(function(){ $('.tab_contents').hide(); $('.tab').click(function() { var activeTabContent = $(this).attr('rel'); $('#tab_contents').not(activeTabContent).hide() .removeClass('tab_contents_active'); $(activeTabContent).toggle().addClass('tab_contents_active'); $(this).parent().addClass('active').siblings().removeClass('active'); }); });
do $('.tab_contents_active').toggle();
在删除课程之前。 这样他们就会在新标签向下滑动之前向上滑动。