Twitter Bootstrap navを隠すクリックで折りたたむ


133

これはサブメニューのドロップダウンではなく、カテゴリは画像のようにクラスliです。

ここに画像の説明を入力してください

レスポンシブメニュー(テンプレートは1ページのみ)からカテゴリを選択することで、ナビゲーションの折りたたみを自動的に非表示にしたい。テンプレートにはページが1つしかないため、散歩してナビゲーションとして使用します。私はそれに影響を与えない解決策を探します、これはメニューのHTMLコードです:

    <!-- NAVBAR
  ================================================== -->
<div class="navbar navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container">
      <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      </a>
      <a class="brand" href="#">Carousel Demo</a>
      <div class="nav-collapse">
        <ul class="nav" >
          <li class="active"><a href="#home">Home</a></li>
          <li><a href="#about">About</a></li>
          <li><a href="#portfolio">Portfolio</a></li>
          <li><a href="#services">Services</a></li>
          <li><a href="#contact">Contact</a></li>
          <!-- dropdown -->
        </ul>
        <!-- /.nav -->
      </div>
      <!--/.nav-collapse -->
    </div>
    <!-- /.container -->
  </div>
  <!-- /.navbar-inner -->
</div>
<!-- /.navbar -->

そして私の解決策は機能していますか?
WooCaSh 2013年

@WooCaShソリューションの順序が間違っていたcustom.jsが間違っていました。$( 'nav a')に気付きました。on( 'click'、function(){そして私の場合、それはクラスであり、それから$( '。nav a')。on( 'click'、function(){。ありがとう、たくさん助けてくれた!
ティムヴィトール2013年


ここでこれらすべての解決策を自分で試して比較したくない場合は、この回答の#1を編集してください。
2014

あなたはここに私の答えは見ることができるstackoverflow.com/questions/14248194/...
キャメル

回答:


165

これを試して:

$('.nav a').on('click', function(){
    $('.btn-navbar').click(); //bootstrap 2.x
    $('.navbar-toggle').click(); //bootstrap 3.x by Richard
    $('.navbar-toggler').click(); //bootstrap 4.x
});

1
これはうまくいきました。WooCaShに感謝します。また、「。」の追加も提案されています。$( 'nav a')=> $( '。nav a')の前のコードに。[クラスセレクターにドット「。」が欠落していた]
Clain Dsilva 2013

7
ちなみに、これはすべてのケースで機能するわけではありません。ウィンドウのサイズが変更され、モバイルメニューが表示される場合は、デフォルトで開きます。
Andrew Boes 2013

8
更新:ブートストラップ3の通常のセレクターは.navbar-toggleであるため、$( "。navbar-toggle")。click();
Richard

41
これにより、ナビゲーションバーで問題が発生します。$( '。nav-collapse')。collapse( 'hide');を使用する方が良い トグルボタンをクリックするのではなく、クリックイベント時。
Rohan

7
ナビゲーションバーが「デスクトップ」モードで開いている場合、これを使用するとちらつきまたは閉じてから再び開きます。
mlapaglia 2015

134

次のように、各リンクでbtn-navbardata-toggle="collapse" data-target=".nav-collapse.in")の2つの属性を複製します。

<div class="nav-collapse">
  <ul class="nav" >
    <li class="active"><a href="#home" data-toggle="collapse" data-target=".nav-collapse.in">Home</a></li>
    <li><a href="#about" data-toggle="collapse" data-target=".nav-collapse.in">About</a></li>
    <li><a href="#portfolio" data-toggle="collapse" data-target=".nav-collapse.in">Portfolio</a></li>
    <li><a href="#services" data-toggle="collapse" data-target=".nav-collapse.in">Services</a></li>
    <li><a href="#contact" data-toggle="collapse" data-target=".nav-collapse.in">Contact</a></li>
  </ul>
</div>

ではブートストラップ4ナビゲーションバーinに変更されたshow構文は次のようになりので:

data-toggle="collapse" data-target=".navbar-collapse.show"


13
<li>に追加してdata-toggledata-targetよりクリーンなソリューションです。ありがとう。
トランテ2014

9
モバイルでも問題なく機能しますが、デスクトップでもナビゲーションバーの折りたたみアニメーションが発生します。これは望ましくありません。
James Brewer、

34
デスクトップバージョンのアドオンの崩壊アニメーション避けるため@JamesBrewer .inデータ・ターゲットへの:data-toggle="collapse" data-target=".nav-collapse.in"
Daghall

23
ブートストラップ3の.nav-collapseを.navbar-collapseに置き換えることを忘れないでください
kuceram

3
これは受け入れられる答えになるはずです!投稿ありがとうございます!
trixtur

60
$(function() {
    $('.nav a').on('click', function(){ 
        if($('.navbar-toggle').css('display') !='none'){
            $('.navbar-toggle').trigger( "click" );
        }
    });
});

6
リンクが表示されているときの不具合を防ぐため、これはより良いソリューションです。
Bruno Dias 14

Bootstrap 4では.navbar-togglerです。とにかく、超機能的なコード、ありがとう!
Xdg 2017年

45

デフォルトのcollapse.jsメソッドを使用する方が良い(V3ドキュメントV4ドキュメント):

$('.nav a').click(function(){
    $('.nav-collapse').collapse('hide');
});

4
クリック機能を使用するよりも間違いなく優れています!変更したいものだけを操作することで、リスクを最小限に抑えるのが最善です。クリックイベントにより、追加の不要な機能が実行される可能性があります。この折りたたみ方法については知りませんでした、ありがとう。
アンドリュー

1
これは私がこれまでに見つけた最良の解決策です。ありがとうございました。私が行った少しの改善:.nav aセレクターをこのセレクターで置き換えます:.nav a:not(.dropdown-toggle)
mneute

私にとっては、私のブートストラップ4例のページで、代わりに.nav a私が使用していた.navbar a
alexandre1985

あなたが意味するものではありません.navbar-collapseし、ありませんか.nav-collapse
Volomike

いいえ、.nav-collapse使用していません。質問のコード例で使用されていたからです。
Vadim P.

32

重複したコードをなめることなく、さらにエレガントにするには、単純にdata-toggle="collapse"data-target=".nav-collapse"属性をナビゲーション自体に適用します。

<nav class="nav-collapse" data-toggle="collapse" data-target=".nav-collapse">
  <ul class="nav">
    <li class="active"><a href="#home">Home</a></li>
    <li><a href="#about">About</a></li>
    <li><a href="#portfolio">Portfolio</a></li>
    <li><a href="#services">Services</a></li>
    <li><a href="#contact">Contact</a></li>
  </ul>
</nav>

非常にクリーンで、JavaScriptは必要ありません。限り、あなたのあなたのように、素晴らしい作品nav aの要素は脂肪の指のためにたくさんの十分なパディングを持っている、とあなたが経由してクリックイベントバブリングを防止していないe.stopPropagation()ユーザーがクリックしたときにnav aアイテム。


1
これは、この動作を実現する適切なブートストラップ方法です。
apenasVB 2016

2
ターゲットを変更してクラスに含めることもお勧めします。これにより、デスクトップバージョンの動作がおかしくなります。 data-target=".nav-collapse.in"
Dave

これについてのより良いことは、それが角度4のrouterLinkで動作するのに対して、他のソリューションは動作しないことです!
stt106 2017年

1
Bootstrap 4では、次のようになります<div class="collapse navbar-collapse" data-toggle="collapse" data-target=".navbar-collapse">
JoshJoe 2018

17

あなたの更新

<li>
  <a href="#about">About</a>
</li>

<li>
  <a data-toggle="collapse" data-target=".nav-collapse" href="#about">About</a>
</li>

この簡単な変更は私にとってうまくいきました。

参照:https : //github.com/twbs/bootstrap/issues/9013


1
これは受け入れられる答えになるはずです。標準のブートストラップ規則で完全に動作します。
Bradley、

1
同意した。これはこれを実現する正しい方法です。jQueryは必要ありません。なぜこれがそれほど賛成投票や注目を集めているのか理解できません。
ワワワ2015

「標準」のVisual Studioマスターページでは、バーガーメニューが表示されなくなり、メニューオプションがなくなります。この回答は、特定のメニュー構成レイアウト(例として提供しない)でのみ機能します。
コーディングを終了

1
これはもう機能しません。data-target=".navbar-collapse.in"新しいブートストラップ標準と同じように使用します。.inこのクラスは、アニメーションを防ぐためにあるときに、デスクトップ上
フィリップogheneroboバログン

私は自分の状況でこのソリューションを使用しましたが、div.navbar-collapse要素のIDをdata-targetパラメーターとして使用しました。
2017年

13

ナビゲーションは、ナビゲーション要素だけでなく、ユーザーが本文の任意の場所をクリックしたときに閉じる必要があります。メニューが開いているが、ユーザーがページ本文をクリックしたとします。ユーザーはメニューを閉じることを期待しています。

また、トグルボタンが表示されていることを確認する必要があります。そうでない場合、ジャンプがメニューに表示されます。

$(document).ready(function() { 

$("body").click(function(event) {
        // only do this if navigation is visible, otherwise you see jump in navigation while collapse() is called 
         if ($(".navbar-collapse").is(":visible") && $(".navbar-toggle").is(":visible") ) {
            $('.navbar-collapse').collapse('toggle');
        }
  });

});

「要素は、ドキュメント内のスペースを消費する場合、可視と見なされます。」コードは、画面にnavbar-collapseが表示されない場合に折りたたみを防止するためのものでしたが、表示されません。
スティーブM

それは素晴らしい作品が、それはまた、私のために働いた唯一の解決策、ブートストラップ> 3.だだけではありませんことを
AME

13

Bootstrap 3.3.6でテスト済み-機能します!

$('.nav a').click(function () {
    $('.navbar-collapse').collapse('hide');
});


7

これを試す> Bootstrap 3

私が探していたものは非常に素晴らしかったですが、JavaScriptとブートストラップモーダルとの衝突がありました。

    $(function() {
    $('.navbar-nav').on('click', function(){ 
        if($('.navbar-header .navbar-toggle').css('display') !='none'){
            $(".navbar-header .navbar-toggle").trigger( "click" );
        }
    });
});

お役に立てれば。


6

これは私にはうまくいきました。承認された回答と同じですが、デスクトップ/タブレットビューに関連する問題を修正します

$('.navbar-nav a').on('click', function () {
        if (window.innerWidth <= 768) {
            $(".navbar-toggle").click();
        }
    });


window.innerWidth <= 767の方が良い;)またはwindow.innerWidth <768
Alex Tape

これはトップアンサーとして選択する必要があります。ただし、これはドロップダウンでは機能しません。セレクターを$( '。navbar-nav')。find( 'a:not( "
。dropdown

6

$('.nav a').click(function () {
    $('.navbar-collapse').collapse('hide');
});


これでうまくいきます。すべての剣道ビューにナビゲーションバーがあるので、beforeShowイベントでそれらを閉じる必要があります。
xinthose

4

デフォルトのBootstrap 3のcollapse.jsメソッドを使用する方が良いと思います.navbar-collapse以下に示すように、非表示にする折りたたみ要素としてて、ます。

他のソリューションでは、Webページでの要素の表示方法や機能に他の望ましくない問題が発生する可能性があります。したがって、最初の問題を解決するためにいくつかのソリューションが表示される可能性がありますが、他のソリューションを導入する可能性が非常に高いため、修正後にサイトの徹底的なテストを実行してください。

このコードの動作を確認するには:

  1. 下の「このコードスニペットを実行」を押してください。
  2. 「全ページ」ボタンを押します。
  3. ドロップダウンがアクティブになるまでウィンドウを拡大縮小します。
  4. 次に、メニューオプションと出来上がりを選択します。

乾杯!


これは、現在受け入れられている回答よりもはるかに優れています。これで、デスクトップにゴーストアニメーションが表示されます。
Cody

3

各ドロップダウンリンクに、data-toggle = "collapse"およびdata-target = "。nav-collapse"を配置します。nav-collapseは、ドロップダウンリストに指定する名前です。

<ul class="nav" >
      <li class="active"><a href="#home">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>
      <!-- dropdown -->
  </ul>

これはモバイル画面のようなドロップダウンがある画面では完全に機能しますが、デスクトップとタブレットではフリッカーを作成します。これは、.collapsingクラスが適用されているためです。flickrを削除するために、メディアクエリを作成し、折りたたみクラスに非表示のオーバーフローを挿入しました。

@media (min-width: 768px) {
.collapsing {
    overflow: inherit;
  }
}

3

data-toggle = "collapse" data-target = "。navbar-collapse.in"をタグに追加するとうまくいき<a>ました。

<div>

        <button type="button" class="navbar-toggle"  data-toggle="collapse" data-target=".navbar-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
    </div>
            <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-right">
                <li class="nav-item"><a
                    href="#" data-toggle="collapse" data-target=".navbar-collapse.in" class="nav-link" >Home
                </a></li>
            </ul>
    </div>

2

ここに私がそれをした方法があります。よりスムーズな方法がありましたら教えてください。

<a>メニューのリンクが含まれているタグ内に、次のコードを追加しました。

onclick="$('.navbar-toggle').click()"

スライドアニメーションを保持します。したがって、完全に使用すると、次のようになります。

<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation" ng-controller="topNavController as topNav">
<div class="container">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="home.html">My Cool Site</a>
    </div>
    <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li class="active" onclick="$('.navbar-toggle').click()"><a href="home.html" onclick="$('.navbar-toggle').click()"><i class="fa fa-home"></i> Home</a></li>
            <li><a href="aboutus.html" onclick="$('.navbar-toggle').click()">About Us</a></li>
        </ul>
    </div><!--/.nav-collapse -->
</div>


1
$(function() {
    $('.nav a').on('click touchstart', function(){ 
        if($('.navbar-toggle').css('display') !='none'){
            $(".navbar-toggle").trigger( "click" );
        }
    });
});

//注モバイルタッチ用の「touchstart」を追加しました。touchstart / endには遅延がありません


1

これは私が使用した中で最高のソリューションです。

$(document).ready(function () {

        $('.nav a').on('click', function () {

            if ($(".btn-navbar").is(":visible") ){ $(".btn-navbar").trigger("click"); } //bootstrap 2.x
            if ($(".navbar-toggle").is(":visible")) { $(".navbar-toggle").trigger("click"); } //bootstrap 3.x
        });

    });

1

このソリューションを使用すると、デスクトップのナビゲーションバーがちらつくことに気づいた人のために:

$('.nav a').on('click', function(){
    $(".navbar-collapse").collapse('hide');
}); 

その問題の簡単な解決策は、「in」の存在を確認することによってのみ折りたたまれたナビゲーションバーを参照することです。

$('.navbar-collapse .nav a').on('click', function(){
    if($('.navbar-collapse').hasClass('in'))
    {
        $(".navbar-collapse").collapse('hide');
    }
});

これにより、ナビゲーションバーがモバイルモードのときにクリックするとナビゲーションバーが折りたたまれますが、デスクトップバージョンはそのままになります。これにより、多くの人がデスクトップバージョンで発生するちらつきを回避できます。

さらに、ドロップダウンメニューのあるナビゲーションバーがある場合、クリックするとすぐにナビゲーションバーが非表示になるため、これらを表示することはできません。したがって、ドロップダウンメニューがある場合(次のように!)

$('.nav a').on('click', function(e){
    if(!$(this).closest('li').hasClass('dropdown') & $( '.navbar-collapse').hasClass('in'))
    {
        $(".navbar-collapse").collapse('hide');
    }
});

これにより、DOMでクリックされたリンクの上にドロップダウンクラスが存在するかどうかが確認されます。存在する場合、リンクはドロップダウンメニューを起動するためのものであり、メニューは非表示になりません。ドロップダウンメニュー内のリンクをクリックすると、ナビゲーションバーが正しく非表示になります。


1
$("body,.nav a").click(function (event) {

    // only do this if navigation is visible, otherwise you see jump in
    //navigation while collapse() iS called 
    if ($(".navbar-collapse").is(":visible") && $(".navbar-toggle").is(":visible")) {
    $('.navbar-collapse').collapse('toggle');
  }
});

1

100%の作業:-

HTMLに追加

<div id="myMenu" class="nav-collapse">

JavaScript

 $(function(){ 
 var navMain = $("#myMenu");
 navMain.on("click", "a", null, function () {
     navMain.collapse('hide');
 });
});

0

これは、アニメーションの代わりにナビゲーションの折りたたみを非表示にしますが、上記の答えと同じコンセプトです

JS:

$('.nav a').on('click', function () {
    $("#funk").toggleClass('in collapse');
});

HTML:

<div class="navbar-collapse" id="funk">

既にアニメーション化されているlocalScroll.jsを使用しているため、これは単一ページのサイトでこれを好みます。


0

モバイルビュー:ブートストラップ+ドロップダウン+ jquery + scrolltoで、同じページのアンカー/ IDを指すナビゲーションアイテムで1つのページテンプレートを切り替えて非表示にする方法

上記のソリューションのいずれかを試してみた問題は、ナビゲーションメニューが折りたたまれず、サブメニュー項目のみが折りたたまれていることでした。

だから私は自分の考えを..そして何を観察できますか?まあ、私たち/ユーザーがscrolltoリンクをクリックするたびに、ページをその位置までスクロールし、同時にメニューを折りたたんでページビューを復元します。

ええと...なぜこのジョブをscrollto関数に割り当てないのですか?簡単:-)

だから2つのコードで

// scroll to top action
$('.scroll-top').on('click', function(event) {
    event.preventDefault();
    $('html, body').animate({scrollTop:0}, 'slow');

そして

// scroll function
function scrollToID(id, speed){
var offSet = 67;
var targetOffset = $(id).offset().top - offSet;
var mainNav = $('#main-nav');
    $('html,body').animate({scrollTop:targetOffset}, speed);
if (mainNav.hasClass("open")) {
    mainNav.css("height", "1px").removeClass("in").addClass("collapse");
    mainNav.removeClass("open");
}

両方の機能に同じコマンドを追加しました

    if($('.navbar-toggle').css('display') !='none'){
    $(".navbar-toggle").trigger( "click" );
}

(上記の貢献者の1人に対するクドス)

このように(同じものを両方のスクロールに追加する必要があります)

$('.scroll-top').on('click', function(event) {
    event.preventDefault();
    $('html, body').animate({scrollTop:0}, 'slow');
if($('.navbar-toggle').css('display') !='none'){
    $(".navbar-toggle").trigger( "click" );
}
});

動作を確認したい場合は、recupero dati da NASを確認してください


0

Bootstrap3ユーザーは、以下のコードを試してください。それは私のために働いた。

function close_toggle() {
   if ($(window).width() <= 768) {
      $('.nav a').on('click', function(){
          $(".navbar-toggle").click();
      });
   }
   else {
     $('.nav a').off('click');
   }
}
close_toggle();

$(window).resize(close_toggle);

0

Bootstrapは.in、Collapse要素にクラスを設定してアニメーションをトリガーし、アニメーションを開きます。単に.inクラスを削除すると、アニメーションは実行されませんが、要素が非表示になります。これは、希望どおりではありません。

要素にifデフォルトのブートストラップクラス.inが設定されているかどうかを確認するステートメントを実行する方が速いと思われます。

したがって、このコードはただ言う:

要素にクラスが.in適用されている場合は、デフォルトのブートストラップアニメーションをトリガーしてクラスを閉じます。それ以外の場合は、デフォルトのブートストラップアクション/それを開くアニメーションを実行します

$('#navbar a').on('click touchstart', function() {
    // if .in class is set on element, the element is visible – you want to hide it
    if ($('#navbar').hasClass('in')) {
        // collapse toggle will remove the .in class and animate the element closed 
        $('#navbar').collapse('toggle');
    }
})

0

次に、それぞれにIDを追加します

<li> add data-target="myMenu" data-toggle="collapse"
<div id="myMenu" class="nav-collapse">
    <ul class="nav">
      <li class="active" data-target="myMenu" data-toggle="collapse"><a href="#home">Home</a></li>
      <li data-target="myMenu" data-toggle="collapse"><a href="#about">About</a></li>
      <li data-target="myMenu" data-toggle="collapse"><a href="#portfolio">Portfolio</a></li>
      <li data-target="myMenu" data-toggle="collapse"><a href="#services">Services</a></li>
      <li data-target="myMenu" data-toggle="collapse"><a href="#contact">Contact</a></li>
    </ul>
</div>

0

Bootstrap 3. *の別の簡単な解決策は次のとおりです。

$( document ).ready(function() {
    //
    // Hide collapsed menu on click
    //
    $('.nav a').each(function (idx, obj) {
        var selected = $(obj);

        selected.on('click', function() {
            if (selected.closest('.collapse.in').length > 0) {
                $('.navbar-toggle').click(); //bootstrap 3.x by Richard
            }
        });
    });
});

0

私はAureliaで動作するソリューションをここに投稿しました: https //stackoverflow.com/a/41465905/6466378

問題は、あなただけ追加することはできませんあるdata-toggle="collapse"data-target="#navbar"あなたのA要素に。また、jQueryは、AureliaまたはAngular環境では機能しません。

私にとっての最善の解決策は、対応するメディアクエリをリッスンし、data-toggle="collapse"必要に応じて属性に追加するカスタム属性を作成することでした。

<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...

Aureliaのカスタム属性は次のようになります。

import {autoinject} from 'aurelia-framework';

@autoinject
export class CollapseToggleIfLess768CustomAttribute {
  element: Element;

  constructor(element: Element) {
    this.element = element;
    var mql = window.matchMedia("(min-width: 768px)");
    mql.addListener((mediaQueryList: MediaQueryList) => this.handleMediaChange(mediaQueryList));
    this.handleMediaChange(mql);
  }

  handleMediaChange(mediaQueryList: MediaQueryList) {
    if (mediaQueryList.matches) {
      var dataToggle = this.element.attributes.getNamedItem("data-toggle");
      if (dataToggle) {
        this.element.attributes.removeNamedItem("data-toggle");
      }
    } else {
      var dataToggle = this.element.attributes.getNamedItem("data-toggle");
      if (!dataToggle) {
        var dataToggle = document.createAttribute("data-toggle");
        dataToggle.value = "collapse";
        this.element.attributes.setNamedItem(dataToggle);
      }
    }
  }
}


0

私は、Bootstrap 4を使用しており、固定されたトップナビゲーションでfullPage.jsを使用して、ここに記載されているすべてを試しましたが、結果はさまざまです。

  • 最高のクリーンな方法を試しました:

    data-toggle="collapse" data-target=".navbar-collapse.show"

    メニューは折りたたまれますが、hrefリンクはどこにもつながりません。

  • 論理的な他の方法を試しました:

    $('myClickableElements').on('click touchstart', function(){
      $(".navbar-collapse.show").collapse('hide');
      // or
      $(".navbar-collapse.show").collapse('toggle');
      // or
      $('.navbar-toggler').click()
    });

    touchstartイベントのため、奇妙な動作が発生します。クリックされたボタンは、実際にクリックしたボタンではなく、リンクが壊れます。さらに、それは.showクラスを私のナビゲーションの他の無関係なドロップダウンに追加し、さらに奇妙なものを引き起こします。

  • divをliに変更しようとしました
  • e.preventDefault()とe.stopPropagation()を試しました
  • もっと試してみました

何もうまくいきません。

だから、代わりに、私はそれをするという(これまでのところ)素晴らしいアイデアを持っていました:

$(window).on('hashchange',function(){
   $(".navbar-collapse.show").collapse('hide');
});

私はすでにそのhashchange関数にものを持っています、私はちょうどこの行を追加しなければなりませんでした。

それは実際に私が望んでいることを正確に実行します:ハッシュが変更されたときにメニューを折りたたみます(つまり、どこか他の場所へのクリックが発生した)。これは良いことです。メニューにリンクが表示され、折りたたまれないためです。

多分これは私の状況で誰かを助けるでしょう!

そして、そのスレッドに参加したすべての人に感謝します。ここで学ぶべき多くの情報があります。


0

ほとんどの場合、トグルボタンが表示されている場合にのみ、トグル関数を呼び出します。

if ($('.navbar-toggler').is(":visible")) $('.navbar-toggler').click();

-1

私がチェックインしたメニューは、「in」クラスをチェックして開いてから、コードを実行します。

$('.navbar-collapse a').on('click', function(){
    if ( $( '.navbar-collapse' ).hasClass('in') ) {
        $('.navbar-toggle').click();
    }
});

完璧に動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.