2017-11-30 15 views
0

を通じて現在のタブに境界線を追加します。ブートストラップタブ。ブートストラップタブここではjqueryの

 <!-- Nav tabs --> 
    <ul class="nav nav-tabs" role="tablist"> 
    <li style="padding: 20px" role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li> 
    <li style="padding: 20px" role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li> 
    <li style="padding: 20px" role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li> 
    <li style="padding: 20px" role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li> 
    </ul> 

    <!-- Tab panes --> 
    <div class="tab-content"> 
    <div role="tabpanel" class="tab-pane active" id="home"> 

     <h1>Hello World</h1> 

    </div> 
    <div role="tabpanel" class="tab-pane" id="profile">Hello</div> 
    <div role="tabpanel" class="tab-pane" id="messages">Some text</div> 
    <div role="tabpanel" class="tab-pane" id="settings">Second text</div> 
    </div> 

</div> 
     </div> 

と現在のタブは、ブートストラップJavaScriptを使用して自動的にアクティブなクラスがあります。

ので、私はjqueryの経由現在のタブに境界線を追加します:

$('li').click(function() { 
    if ($(this).hasClass('active')) { 
     $(this).addClass('border-add') 
    } 
}) 

私はそれを行うことはできません。このコードはうまくいきません。タブの1つをクリックすると、現在のタブに罫線が表示されます。しかし、別のタブをクリックすると、最初にタブの枠線をクリックしても消えません。 人はそれを実現する方法を私に説明します。前もって感謝します!

+0

私は混乱しています。現在のタブには、BootstrapのJSを通して '.active'が既に適用されています。なぜこれらのスタイルを '.active'に追加するのではなく、追加のJavaScriptを完全に避けて、別のクラスを追加していますか? –

+0

私は申し訳ありません!私はとてもばかだ。ごめんなさい。 – Sam

答えて

3

これはおそらく、ちょうど約あるクラスに

li.active{ 
border: 1px solid black; 
} 

/* Latest compiled and minified CSS included as External Resource*/ 
 

 
/* Optional theme */ 
 
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css'); 
 

 
body { 
 
    margin: 10px; 
 
} 
 
li.active{ 
 
border: 1px solid black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 
 

 
<!-- Nav tabs --> 
 
    <ul class="nav nav-tabs" role="tablist"> 
 
    <li style="padding: 20px" role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li> 
 
    <li style="padding: 20px" role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li> 
 
    <li style="padding: 20px" role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li> 
 
    <li style="padding: 20px" role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li> 
 
    </ul> 
 

 
    <!-- Tab panes --> 
 
    <div class="tab-content"> 
 
    <div role="tabpanel" class="tab-pane active" id="home"> 
 

 
     <h1>Hello World</h1> 
 

 
    </div> 
 
    <div role="tabpanel" class="tab-pane" id="profile">Hello</div> 
 
    <div role="tabpanel" class="tab-pane" id="messages">Some text</div> 
 
    <div role="tabpanel" class="tab-pane" id="settings">Second text</div> 
 
    </div> 
 

 
</div> 
 
     </div>

0

を使用してjQueryのなく行うことができます。あなたがしなければならないのは、それを追加する前にborder-addを削除することです:

$('li').click(function() { 
    $('li.border-add').removeClass('border-add'); // remove from the one that has it first 
    if ($(this).hasClass('active')) { 
    $(this).addClass('border-add'); // then add the new one 
    } 
}) 
+0

まずクラスを削除してから追加します。私はそれを2回クリックしなければならない – Sam