nav-bar
ウィザードの進行状況インジケーターにブートストラップを使用しています。まだアクセスしていないウィザードのステップがクリックできないことを確認したいと思います。に表示したいのですが、グレー表示にnav-bar
してリンクを無効にしてください。
これはブートストラップで実行できますnav-bar
か?
nav-bar
ウィザードの進行状況インジケーターにブートストラップを使用しています。まだアクセスしていないウィザードのステップがクリックできないことを確認したいと思います。に表示したいのですが、グレー表示にnav-bar
してリンクを無効にしてください。
これはブートストラップで実行できますnav-bar
か?
disabled
クラスをコンテナに追加できます<li>
:
<ul class="nav nav-list">
<li class="disabled"><a href="index.html">...</a></li>
</ul>
ただし、ユーザーがクリックすることを禁止するには、JavaScriptを使用してこれを防ぐ必要があります。
$(document).ready(function() {
$(".nav li.disabled a").click(function() {
return false;
});
});
もう1つの方法は、プロパティを一時的href
にアンカー( )に置き換えることです。#
これを行う正しい方法は、属性<a>
なしでnchorタグを使用することhref
です。
これはほとんど知られていない手法ですが、完全に有効なHTMLであり、<a>
タグに起因するすべてのスタイルを持つ要素につながりますが、リンク機能はありません。
<ul class="nav nav-list">
<li><a>...</a></li>
</ul>
技術的な背景については、 W3CのHTML仕様を参照してください。
要素にhref属性がない場合、その要素は、リンクが関連していた場合にリンクが配置された可能性のある場所のプレースホルダーを表し、要素のコンテンツのみで構成されます。
これは、CSSで(つまり<11をサポートする必要がない限り)pointer-events
プロパティを使用して完全に実行できます。ただし、ポインタイベントをオフにするa
と、許可されていないカーソルも取得できなくなったため、無効に設定しましたli
。(私はこの質問がかなり古いことを知っていますが、それでも最初の検索結果です)
これはその目的のための私のSCSSです:
ul.nav {
li.disabled {
cursor: not-allowed;
a {
pointer-events: none;
}
}
}
無効を追加するだけではナビゲーションが妨げられないことを付け加えたいと思います。さらに、answers jqueryソリューションは機能しますが、無効にされたクラスを追加または削除しても、ハンドラーのバインドは解除されません。
これは、jqueryの.onメソッドを使用するようにイベントハンドラーを変更することで解決できます。
$('body').on('click', '.disabled', function(e) {
e.preventDefault();
return false;
});
これにより、ハンドラーがbodyにアタッチされ(bodyは必ずコンテナーに置き換えられます)、無効にフィルターされます。本文がクリックされたときはいつでも、クリックされたものが無効になっていると、クリックが防止されます。
詳細については、 http://api.jquery.com/on/を確認してください。
最も簡単な方法は、クラスをからに変更するnav-link
ことnav-link disabled
です。
このような:
<a class="nav-link disabled" href="#">
navリンクを無効にするには、liとタグの両方を無効にする必要があります。しかし、かみそりの構文を使用する場合、これは少し注意が必要な場合があります。無効にされたクラスをliに追加することは正常に機能しますが、タグに対するアクションを無効にすることはありません。したがって、gustavohenkeソリューションに似ていますが、少し洗練されたもので、ドキュメント準備機能でこれを試してください。
$(".nav li.disabled a").prop("disabled",true)
hrefであなたの価値を維持するため。onclick="returnfalse;"を使用できます アンカータグを切り替えます。ブートストラップが無効になっているcssクラスを使用して、メニュー項目をグレー表示します。
var enableMyLink = false;
if (enableMyLink) {
$("li").removeClass("disabled").find("a").removeAttr("onclick");
} else {
$("li").addClass("disabled").find("a").attr("onclick", "return false;");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<li>
<a href="http://sample.com/">My Link</a>
</li>
まず、ulにIDを追加する必要があります。
<ul class="nav navbar-nav navbar-right" id="someId">
<li><a>Element</a></li>
</ul>
ul
たとえば、を非表示にすることができます。
$(document).find('ul#someId').hide();
必要に応じて、ulを表示できます。
$(document).find('ul#someId').show();