Bootstrap レスポンシブ ナビゲーション バーを使用しています。ナビゲーション バーが折りたたまれているときにメニューを開いてメニュー項目をクリックすると、メニューが自動的に閉じず、手動で閉じる必要があります。
いずれかのボタンをクリックした後、メニューを自動的に閉じることは可能ですか?
Bootstrap レスポンシブ ナビゲーション バーを使用しています。ナビゲーション バーが折りたたまれているときにメニューを開いてメニュー項目をクリックすると、メニューが自動的に閉じず、手動で閉じる必要があります。
いずれかのボタンをクリックした後、メニューを自動的に閉じることは可能ですか?
ブートストラップ 3 の作業ソリューション
$('.navbar-collapse a').click(function(){
$(".navbar-collapse").collapse('hide');
});
編集: Maximusが以下で指摘しているように、3.x ブートストラップソリューションは次の とおりです。
$('.navbar-collapse a').click(function(){
$(".navbar-collapse").collapse('hide');
});
https://jsfiddle.net/yohuLuj2/
2.x ブートストラップの古い回答:
リスト項目にクリック ハンドラーを追加し、その方法でナビゲーションを閉じることで、これを実行できるはずです。
$('.nav-collapse').click('li', function() {
$('.nav-collapse').collapse('hide');
});
ここにjsfiddleがあります: http://jsfiddle.net/hajpoj/By6ym/4/
次のように、各リンクで btn-navbar (data-toggle="collapse" data-target=".nav-collapse") の 2 つの属性を複製するだけです。
<div class="nav-collapse">
<ul class="nav" >
<li class="active"><a href="#home" data-toggle="collapse" data-target=".nav-collapse">Home</a></li>
<li><a href="#about" data-toggle="collapse" data-target=".nav-collapse">About</a></li>
<li><a href="#portfolio" data-toggle="collapse" data-target=".nav-collapse">Portfolio</a></li>
<li><a href="#services" data-toggle="collapse" data-target=".nav-collapse">Services</a></li>
<li><a href="#contact" data-toggle="collapse" data-target=".nav-collapse">Contact</a></li>
</ul>
</div>
ジェイソンのソリューションに追加したいのは、ドロップダウンの例外だけです。誰かがクリックしてサブメニューを切り替えるだけの場合は、メニューを閉じたくありません。だから…</p>
$('.navbar-collapse a:not(.dropdown-toggle)').click(function(){
$(".navbar-collapse").collapse('hide');
});
@Mikeのドロップダウンソリューションは、ドロップダウントグル内のアイテムがメニューを非表示にしないことを除いて、私にとってはうまくいったので、これを追加するようにしました:
$('.navbar-collapse .dropdown-menu').click(function(){
$(".navbar-collapse").collapse('hide');
});
すべての Navbar ではなく、DOM ツリーをたどり、関連する Navbar を閉じることを忘れないでください。特に Bootstrap 3 では、次のコード スニペットのようなものを使用します。
$("body").on("click", ".navbar-collapse a", function() {
var $this = $(this);
setTimeout(function() {
$this.closest(".navbar-collapse").collapse('hide');
}, 350);
});
もう1つの問題は、デスクトップにナビゲーションバーが表示されたときに、ナビゲーションバーを非表示/表示しようとするため、これを作成しました:
$('.navbar-collapse a:not(.dropdown-toggle)').click(function(){
if($(window).width() < 768 )
$('.navbar-collapse').collapse('hide');
});
Angular を使用している場合は、折りたたみをルート ナビゲーションにバインドできます。
$scope.$on('$routeChangeSuccess', function(event, toState, toParams, fromState, fromParams){ $(".navbar-collapse").collapse('hide'); });