2017-01-28 16 views
-2

ユーザーがボタンをクリックしたときにメニューに「アクティブ」クラスを追加しようとしていますが、何らかの理由で正しく動作しません。彼らは本当に速く2回クリックする必要があります。クリックとクリックの両方の機能を試しましたが、まだ機能していません。jQuery click()and on()function

 \t $('#menu li').click(function() { 
 
    \t  $('#menu li.active').removeClass('active'); 
 
    \t  $(this).addClass('active'); 
 
    \t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="navbar-collapse collapse"> 
 
    <ul class="nav navbar-nav navbar-right" id="menu"> 
 
    <li class="nav active"><a href="?load=index">Home</a> 
 
    </li> 
 
    <li class="nav"><a href="?load=about">About</a> 
 
    </li> 
 
    <li class="nav"><a href="?load=services">Services</a> 
 
    </li> 
 
    <li class="nav"><a href="?load=gallery">Gallery</a> 
 
    </li> 
 
    <li class="nav"><a href="?load=contact">Contact</a> 
 
    </li> 
 
    </ul> 
 
</div>

+1

あなたのコードは完璧に動作します。 –

+0

URLを解析するか、クラスサーバー側を追加する必要があります。リンクをクリックすると新しいページが表示されます – charlietfl

答えて

0

あなたはあなたのコードの末尾にページloaded.Addた後、これをアクティブリーを処理する必要があります。

 var curruntLocation = window.location.href; 

     $('#menu li a').each(function() 
     { 
      var thisHref = $(this).attr('href'); 
      if (curruntLocation.indexOf(thisHref) > 0) 
      { 
       $(this).parent().addClass('active');      
      } 
     }); 
+0

ねえ、これはうまくいった!ありがとうございました:) – lalo

+0

あなたを歓迎します。あなたのポストを他人に使いたい場合は、より関連性の高いタイトルを設定する方がいいです。例:URLでアクティブなメニューを見つける方法。 –

0

ページがリロードされたときにクリックしながら、メニュー項目に含まれるリンクがページをリロードされ、初期設定では、最初に来ます。関数を実行する場合はpreventDefault()を使用できますが、リンクは機能しません。

クエリ文字列の代わりにアンカーを使用することをお勧めします。

+0

Aw、それです...意味があります。まあ、私はdiv要素内の他のテンプレートからすべてのコンテンツを読み込み、アクティブなクラスを維持する方法を把握しようとしていたindex.phpテンプレートがあります。 – lalo

+0

各コンテンツを別々のdivに読み込み、最初の子を除くすべてのコンテンツに対してdisplay:noneを設定することができます(クラスに.activeを与えます)。次に、メニュー項目をクリックしながら、アクティブなクラスを関連するdivに追加して、アクティブなdivをCSSで表示させます。 –

+0

これは可能な解決策のように思えます。それを試してみましょう!ありがとうございました! – lalo