2016-10-04 2 views
-1

ブートストラップのnavbar(以下のhtmlコード)でclass = "active"を動的に変更する方法が見つかりません。すべてのページに<nav>...</nav>コードをすべて再入力して、すべての<li>アイテムにclass = "active"と入力するか、別のnavbar.htmlファイルを作成してそれをすべてのページの先頭に含める方が良いかどうかを知りたかったファイルを作成し、それを変更するスクリプトやPHPコードを追加しますか? (私は方法を見つけることができません)。「アクティブ」クラスを動的に変更するか、各ページにナビゲーションバーを追加しますか?

一般に、2つのアプローチのどちらが優れていますか?

コード:

<nav class="navbar navbar-inverse"> 
    <div class="container-fluid"> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="#">Logo</a> 
    </div> 
    <div class="collapse navbar-collapse" id="myNavbar"> 
     <ul class="nav navbar-nav"> 
     <li class="active"><a href="#">Home</a></li> 
     <li><a href="#">About</a></li> 
     <li><a href="#">Projects</a></li> 
     <li><a href="#">Contact</a></li> 
     </ul> 
     <ul class="nav navbar-nav navbar-right"> 
     <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
     </ul> 
    </div> 
    </div> 
</nav> 
+2

重複 - http://stackoverflow.com/questions/35427641/how-to-dynamically-set-the-active-class-in-bootstrap-navbar?rq=1 –

+0

これは重複ではありません。 Stack Exchangeの多くのスレッドは、それを行う方法、いくつかのPHPといくつかのJS、それらのどれも私のコードのために働いていません。 私はどちらが良いのか尋ねました:すべてのページにナビゲーションバーをコピーするか、別のスレッドに表示されないように別のスレッドに表示されます。 – comparter

+2

それから意見を求めています**間違いなくオフトピック** –

答えて

-1

その優れたスクリプトやPHPのコードでそれをインクルードします。 URLサフィックスを応じてあなたが動的に

$('.navbar-nav li').click(function() { 
     $(this).siblings().removeClass('active'); 
     $(this).addClass('active'); 
    }); 

この1つはjQueryのを使用して、私のjspページに私の作品のLi

+0

問題は、すべてのStack Exchangeスレッドを読んだことです.PHPでポストし、JS/JQueryでポストしていますが、動作しません。あなたは特定のものを助けることができるでしょうか? Ty – comparter

0

更衣クラスのアクティブを変更するスクリプトを書くことができ、あなたのコード

を考慮し変更を加えました

あなたが試すことがこの

+0

それは動作しませんでしたが、私は何をするかに問題があると思います。 navbar.phpファイルを作成し、すべてのナビゲーションコンテンツをコピーして保存します。 すべてのページ(ホーム、コンタクトなど)に、navbar.phpの下に最初の行を追加します。また、上のコードでcurrent.jsファイルを作成し、各ページにスクリプトを考えるためのリンクを貼り付けました。まだ動作していません – comparter

+0

編集:上記のコードをスクリプトタグ – comparter

+0

でこのページの各ページにコピーしてもこの機能にアラートが書き込まれていても実行されない –

0
PageOne.html 
<body> 
<header id="Include"> 
</header> 
<section class="sectionOne"> 
    <h1>This is Page one</h1> 
</section> 
</body> 

PageTwo.html 
<body> 
<header id="Include"> 
</header> 
<section class="sectionOne"> 
    <h1>This is Page two</h1> 
</section> 
</body> 

Header.html 
<nav class="navbar navbar-default"> 
    <div class="container-fluid"> 
    <!-- Brand and toggle get grouped for better mobile display --> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> 
     <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="#">Brand</a> 
    </div> 

    <!-- Collect the nav links, forms, and other content for toggling --> 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
     <ul class="nav navbar-nav"> 
     <li class="active"><a href="index.html">page one</a></li> 
     <li><a href="pagetwo.html">page two</a></li> 
     </ul> 
    </div><!-- /.navbar-collapse --> 
    </div><!-- /.container-fluid --> 
</nav> 

App.js 
    $('#Include').load('header.html', function(){ 
     var Murl = location.pathname; 
//Murl gets the pathname from addressbar 
     var ActiveUrl = Murl.slice(1, Murl.length); 
     $('.navbar-nav li').removeClass('active'); 
//ThisURL gets all the href from navbar 
     var ThisURL = $('.navbar-nav li a').attr('href'); 
     if(ThisURL = ActiveUrl){ 
      $('.navbar-nav li a[href="'+ ThisURL +'"]').parent().addClass('active'); 
     } 
    }); 

これはあなたの問題を解決することを願っています。私はjqueryだけを使用しています。

関連する問題