2016-05-23 158 views
1

當我點擊選項卡1,1內容顯示和活動選項卡類添加。jquery切換選項卡隱藏活動類當點擊相同的選項卡

當我點擊選項卡2,1內容隱藏刪除選項卡活動類和2的內容顯示,並增加了標籤活動類

但是當我點擊選項卡1,1內容表達出我想要的效果,再次單擊標籤1內容隱藏,但選項卡活動類不會刪除。

任何建議將幫助感謝

<div id="tabs_container"> 
    <ul class="tabs"> 
    <li> 
     <a href="#" rel="#tab_1_contents" class="tab">Option 1</a> 
    </li> 
    <li> 
     <a href="#" rel="#tab_2_contents" class="tab">Option 2</a> 
    </li> 
    </ul> 

    <div class="tab_contents_container">  
     <div id="tab_1_contents" class="tab_content tab_contents_active"> 
     Option 1 stuff  
     </div> 

     <div id="tab_2_contents" class="tab_content">' 
     Option 2 stuff</div> 
     </div> 

    </div> 
</div> 

<script> 
$('.tab-content').hide(); 

    $('.tab').click(function() { 
    var target = $(this.rel);   
     $('.tab-content').not(target).hide(); 
     target.toggle(); 

    $('#tabs_container > .nav-tabs > li.tabActive') 
     .removeClass('tabActive'); 

    $(this).parent().addClass('tabActive'); 

    $('#tabs_container > .tab_contents_container > div.tab_contents_active') 
     .removeClass('tab_contents_active'); 

    $(this.rel).addClass('tab_contents_active'); 
}); 
</script> 
+0

只是'target.show();',而不是'target.toggle();' – Rayon

+0

不工作,我的jQuery的技能是0,我從另一個帖子複製此代碼,一切正常我只想添加選項,當我點擊相同的標籤內容隱藏和活動類別刪除。 – patas1818

回答

1

使用target.show();而不是target.toggle();.toggle()將根據其當前visibility

也是正確typoshow()/hide()元素。在選擇項目時,您正在使用-而不是_

$('.tab_content').hide(); //typo here! 
 
$('.tab').click(function() { 
 
    $('.tab_content').hide(); 
 
    var target = $(this.rel); 
 
    if ($(this).parent().hasClass('tabActive')) { 
 
    target.hide(); 
 
    $(this).parent().removeClass('tabActive'); 
 
    } else { 
 
    $('.tabs li').removeClass('tabActive'); 
 
    target.show(); 
 
    $(this).parent().addClass('tabActive'); 
 
    } 
 
});
.tabActive { 
 
    background: orange; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="tabs_container"> 
 
    <ul class="tabs"> 
 
    <li> 
 
     <a href="#" rel="#tab_1_contents" class="tab">Option 1</a> 
 
    </li> 
 
    <li> 
 
     <a href="#" rel="#tab_2_contents" class="tab">Option 2</a> 
 
    </li> 
 
    </ul> 
 

 
    <div class="tab_contents_container"> 
 
    <div id="tab_1_contents" class="tab_content"> 
 
     Option 1 stuff 
 
    </div> 
 

 
    <div id="tab_2_contents" class="tab_content">Option 2 stuff</div> 
 
    </div> 
 

 
</div>

+0

現在當單擊相同的選項卡並且選項卡活動類也沒有刪除時,內容不會隱藏。 – patas1818

+0

這就是你想要的嗎? – Rayon

+0

感謝您的時間,但不工作,因爲當我點擊標籤1的內容顯示,但是當我再次點擊標籤1時,內容遮罩隱藏並且.tabActive(橙色背景)應該消失。 – patas1818

1

你需要使用.toggleClass();

$('#tabs_container > .nav-tabs > li.tabActive').not($(this).parent()).removeClass('tabActive'); 
$(this).parent().toggleClass('tabActive'); 

$('.tab').click(function() { 
 
    var target = $(this.rel); 
 

 
    $('#tabs_container li').not($(this).parent()).removeClass('tabActive'); 
 

 
    $(this).parent().toggleClass('tabActive'); 
 

 
    $('#tabs_container > .tab_contents_container > div').not($(target)).removeClass('tab_contents_active'); 
 
    $(target).toggleClass('tab_contents_active'); 
 
}).eq(0).click();
.tabActive{ 
 
    background : #005eff; 
 
    padding : 5px; 
 
    
 
} 
 
.tabActive > a{ 
 
    color :#fff; 
 
} 
 

 
.tab_content{ 
 
    display : none; 
 
} 
 

 
.tab_contents_active{ 
 
    display : block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="tabs_container"> 
 
    <ul class="tabs"> 
 
    <li> 
 
     <a href="#" rel="#tab_1_contents" class="tab">Option 1</a> 
 
    </li> 
 
    <li> 
 
     <a href="#" rel="#tab_2_contents" class="tab">Option 2</a> 
 
    </li> 
 
    </ul> 
 

 
    <div class="tab_contents_container">  
 
     <div id="tab_1_contents" class="tab_content"> 
 
     Option 1 stuff  
 
     </div> 
 

 
     <div id="tab_2_contents" class="tab_content"> 
 
     Option 2 stuff 
 
     </div> 
 

 
    </div> 
 
</div>

+0

不工作,我的jQuery技能是0,我再次單擊相同的選項卡,內容隱藏,但選項卡中的活動類不會刪除。 – patas1818

+0

@ patas1818更新了答案 –

0

一個簡單版本的代碼:

$('.tab').click(function() { 
 
    $('.tab_content').removeClass('tab_contents_active'); 
 
    $(this.rel).addClass("tab_contents_active"); 
 
    });
.tab_content { display:none;} 
 
.tab_content.tab_contents_active { display:block;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="tabs_container"> 
 
    <ul class="tabs"> 
 
    <li> 
 
     <a href="#" rel="#tab_1_contents" class="tab">Option 1</a> 
 
    </li> 
 
    <li> 
 
     <a href="#" rel="#tab_2_contents" class="tab">Option 2</a> 
 
    </li> 
 
    </ul> 
 

 
    <div class="tab_contents_container"> 
 
    <div id="tab_1_contents" class="tab_content tab_contents_active"> 
 
     Option 1 stuff 
 
    </div> 
 

 
    <div id="tab_2_contents" class="tab_content"> 
 
     Option 2 stuff</div> 
 
    </div> 
 

 
</div> 
 
</div>

相關問題