ボタンを無効にするのと同じように、Bootstrap 2.0でタブを無効にできますか?
17 に答える
data-toggle="tab"
ライブ/デリゲートイベントを使用して接続されているため、タブから属性を削除できます
2.1 の時点で、http://twitter.github.com/bootstrap/components.html#navsのブートストラップ ドキュメントから、次のことができます。
無効状態
任意のナビゲーション コンポーネント (タブ、ピル、またはリスト) については、グレーのリンクとホバー効果なしの .disabled を追加します。ただし、href 属性を削除しない限り、リンクは引き続きクリック可能です。または、カスタム JavaScript を実装して、これらのクリックを防止することもできます。
機能追加の説明については、https://github.com/twitter/bootstrap/issues/2764を参照してください。
無効なリンクのクリックを防ぐために、次の Javascript を追加しました。
$(".nav-tabs a[data-toggle=tab]").on("click", function(e) {
if ($(this).hasClass("disabled")) {
e.preventDefault();
return false;
}
});
また、次のソリューションを使用しています。
$('a[data-toggle="tab"]').on('click', function(){
if ($(this).parent('li').hasClass('disabled')) {
return false;
};
});
ここで、クラス 'disabled' を親の li に追加するだけで、タブが機能せず、灰色になります。
古い質問ですが、それは私を正しい方向に向けてくれました。私が行った方法は、無効なクラスをliに追加してから、次のコードをJavascriptファイルに追加することでした。
$('.nav-tabs li.disabled > a[data-toggle=tab]').on('click', function(e) {
e.stopImmediatePropagation();
});
これにより、li のクラスが無効になっているすべてのリンクが無効になります。totasの回答に似ていますが、ユーザーがタブリンクをクリックするたびにifを実行せず、return falseを使用しません。
うまくいけば、それは誰かに役立つでしょう!
css だけで、2 つの css クラスを定義できます。
<style type="text/css">
/* Over the pointer-events:none, set the cursor to not-allowed.
On this way you will have a more user friendly cursor. */
.disabledTab {
cursor: not-allowed;
}
/* Clicks are not permitted and change the opacity. */
li.disabledTab > a[data-toggle="tab"] {
pointer-events: none;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
opacity: .65;
}
</style>
これはhtmlテンプレートです。必要なのは、クラスを優先リスト項目に設定することだけです。
<ul class="nav nav-tabs tab-header">
<li>
<a href="#tab-info" data-toggle="tab">Info</a>
</li>
<li class="disabledTab">
<a href="#tab-date" data-toggle="tab">Date</a>
</li>
<li>
<a href="#tab-photo" data-toggle="tab">Photo</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab-info">Info</div>
<div class="tab-pane active" id="tab-date">Date</div>
<div class="tab-pane active" id="tab-photo">Photo</div>
</div>
ジェームズの答えに加えて:
リンクの使用を無効にする必要がある場合
$('a[data-toggle="tab"]').addClass('disabled');
無効なリンクがタブをロードしないようにする必要がある場合
$('a[data-toggle="tab"]').click(function(e){
if($this.hasClass("disabled")){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
}
リンクを無効にする必要がある場合
$('a[data-toggle="tab"]').removeClass('disabled');
私のタブはパネルにあったので、タブアンカーに class='disabled' を追加しました
JavaScriptで追加しました:
$(selector + ' a[data-toggle="tab"]').on('show.bs.tab', function (e) {
if ($(this).hasClass('disabled')){
e.preventDefault();
return false;
}
})
そして、lessでのプレゼンテーションのために追加しました:
.panel-heading{
display:table;
width:100%;
padding-bottom:10px;
ul.nav-tabs{
display:table-cell;
vertical-align:bottom;
a.disabled{
.text-muted;
cursor:default;
&:hover{
background-color:transparent;
border:none;
}
}
}
}
答えはどれも私にとってはうまくいきません。data-toggle="tab"
から削除a
すると、タブがアクティブ化されなくなりますが#tabId
、URL にハッシュが追加されます。それは私には受け入れられません。受け入れられないのは、javascript の使用です。
disabled
何が機能するかは、クラスを に追加し、それを含む の属性をli
削除することです。href
a
これを回避するための最も簡単でクリーンな解決策は 、タグに追加onclick="return false;"
することです。a
<ul class="nav nav-tabs">
<li class="active">
<a href="#home" onclick="return false;">Home</a>
</li>
<li>
<a href="#ApprovalDetails" onclick="return false;">Approval Details</a>
</li>
</ul>
- 追加
"cursor:no-drop;"
するとカーソルが無効に見えるだけですが、クリック可能です。URLには、ex の href ターゲットが追加されます。page.apsx#Home
- AND 削除に
"disabled"
クラスを追加する必要はありません<li>
href
これが私の試みです。タブを無効にするには:
- タブの LI に「無効」クラスを追加します。
- LI > A から「data-toggle」属性を削除します。
- LI > A の「クリック」イベントを抑制します。
コード:
var toggleTabs = function(state) {
disabledTabs = ['#tab2', '#tab3'];
$.each(disabledTabs, $.proxy(function(idx, tabSelector) {
tab = $(tabSelector);
if (tab.length) {
if (state) {
// Enable tab click.
$(tab).toggleClass('disabled', false);
$('a', tab).attr('data-toggle', 'tab').off('click');
} else {
// Disable tab click.
$(tab).toggleClass('disabled', true);
$('a', tab).removeAttr('data-toggle').on('click', function(e){
e.preventDefault();
});
}
}
}, this));
};
toggleTabs.call(myTabContainer, true);