Bootstrap を使うと、簡単にタブを実装することができます:
この中の特定のタブの選択したり、有効化/無効化を JavaScript(jQuery) で切り替える方法を調べ、シンプルな実装方法を見つけたので共有します。また上のタブとボタンで実際の挙動を確認できるようにしています。
まず、特定のタブを選択するにはタブのアンカー(<a id="XXX">)をセレクトして、
またタブのアンカーにつける data-toggle="tab" という属性を取り除くことでタブとしての挙動を無効化することができます。逆に data-toggle="tab" という属性を付けてあげることで、無効化されていたタブを再び有効化することができるようになります:
あとはこれらを組み合わせることで特定のタブを選択したり、その際に他のタブを有効化/無効化したりすることで実現できるようになります。
上述の画面では以下のようなコードを実装しています。サンプルとしてどうぞ:
(HTML)
タブA
タブB
タブC
この中の特定のタブの選択したり、有効化/無効化を JavaScript(jQuery) で切り替える方法を調べ、シンプルな実装方法を見つけたので共有します。また上のタブとボタンで実際の挙動を確認できるようにしています。
まず、特定のタブを選択するにはタブのアンカー(<a id="XXX">)をセレクトして、
$('.tav-tabs a[href="#XXX"]').show( 'tab' );というメソッドを実行することで選択できます。またタブのアンカーにつける data-toggle="tab" という属性を取り除くことでタブとしての挙動を無効化することができます。逆に data-toggle="tab" という属性を付けてあげることで、無効化されていたタブを再び有効化することができるようになります:
//. 無効化
$('.tav-tabs a[href="#XXX"]').removeAttr( 'data-toggle' );
//. 有効化
$('.tav-tabs a[href="#XXX"]').attr( 'data-toggle', 'tab' );
あとはこれらを組み合わせることで特定のタブを選択したり、その際に他のタブを有効化/無効化したりすることで実現できるようになります。
上述の画面では以下のようなコードを実装しています。サンプルとしてどうぞ:
(HTML)
<div class="container">
<ul class="nav nav-tabs">
<li class="nav-item"><a href="#tab-a" data-toggle="tab" class="nav-link active">A</a></li>
<li class="nav-item"><a href="#tab-b" data-toggle="tab" class="nav-link">B</a></li>
<li class="nav-item"><a href="#tab-c" data-toggle="tab" class="nav-link">C</a></li>
</ul>
<div class="tab-content">
<div id="tab-a" class="tab-pane active">
<p class="text-left">タブA</p>
</div>
<div id="tab-b" class="tab-pane">
<p class="text-center">タブB</p>
</div>
<div id="tab-c" class="tab-pane">
<p class="text-right">タブC</p>
</div>
</div>
</div>
<div class="container">
<button onclick="selectX();" class="btn btn-xs btn-primary" id="btnX">タブAを選択&タブAのみ有効</button>
<button onclick="selectY();" class="btn btn-xs btn-success" id="btnY">タブBを選択&タブBとCのみ有効</button>
<button onclick="selectZ();" class="btn btn-xs btn-warning" id="btnZ">タブCを選択&タブA, B, Cすべて有効</button>
</div>(JavaScript)functon activeTab( tabid ){
$('.nav-tabs a[href="#' + tabid + '"]').tab( 'show' );
}
function enableTab( tabid ){
$('.nav-tabs a[href="#' + tabid + '"]').attr( 'data-toggle', 'tab' );
}
function disableTab( tabid ){
$('.nav-tabs a[href="#' + tabid + '"]').removeAttr( 'data-toggle' );
}
function selectX(){
//. A を選択して A のみを有効にする
activeTab( 'tab-a' );
enableTab( 'tab-a' );
disableTab( 'tab-b' );
disableTab( 'tab-c' );
}
function selectY(){
//. B を選択して B, C のみを有効にする
activeTab( 'tab-b' );
disableTab( 'tab-a' );
enableTab( 'tab-b' );
enableTab( 'tab-c' );
}
function selectZ(){
//. C を選択して A, B, C すべてを有効にする
activeTab( 'tab-c' );
enableTab( 'tab-a' );
enableTab( 'tab-b' );
enableTab( 'tab-c' );
}
