2010-12-14 11 views
2

私は質問があります。 は私がアクティブなリンクjquery superfish

<div id="menu" class="ge-navigation-item"> 
    <!-- navigation --> 
    <ul id="test" class="sf-menu sf-vertical sf-js-enabled sf-shadow"> 
     <li><a href="index.html">Home</a></li> 
     <li><a href="#">About</a> 
     <ul> 
      <li><a href="index.html">Index</a></li> 
      <li><a href="#">Page</a> 
          <ul> 
           <li><a href="#">menu item</a></li> 
           <li><a href="#">menu item</a></li> 
           <li><a href="proef.html">menu item</a></li> 
           <li><a href="index.html">index</a></li> 
           <li><a href="#">menu item</a></li> 
          </ul> 
      </li> 
      <li><a href="page-fullwidth.php">Page - Full Width</a></li> 
     </ul> 
     </li> 
     <li><a href="showcase.php">Showcase</a></li> 
    </ul> 
    <!-- /navigation --> 
    </div> 

は私がしたいことはリンクをクリックすると、メニュー構造が見えるようになるということである次のような構造でjqueryのSUPERFISHメニューを使用し

だから、index.htmlをクリックすると、とのすべてのリンクにリンクを設定しますhrefのindex.htmlを しかしproef.htmlをクリックすると、hrefのproef.html上でアクティブなクラスを設定します - ページ - について

これまでのところ、私はこれを試してみましたが、悪い結果

var path = window.location.toString().split("/") 
path = path[path.length - 1] 
//alert (path); 
if (path) 
$("#test a[href='" + path + "']").addClass("actief"); 
$("#test ul li:has(a) a[href='" + path + 
    "']").parent().parent().parent().addClass("actief"); 
としています

答えて

2

ようこそstackoverflow。これを試してください:

var path = window.location.pathname.split('/'); 
path = path[path.length-1]; 

if (path !== undefined) { 
    $("#menu3").find("a[href='" + path + "']").addClass("actief"); 

} 

これは、現在のURLの最後の項目と一致するすべてのリンクにクラスを追加する必要があります。違う行為を探していたら、詳しく教えてください!

UPDATE
実際に、それはあなたがこれを必要とするようになっていますチェーンまで、すべてのa要素にクラスを配置します

var path = window.location.pathname.split('/'); 
path = path[path.length-1]; 

if (path !== undefined) { 
    $("#menu3") 
     .find("a[href$='" + path + "']") // gets all links that match the href 
     .parents('li') // gets all list items that are ancestors of the link 
     .children('a') // walks down one level from all selected li's 
     .addClass('actief'); 
} 

+0

マウスオーバーした後に表示しないようにリセットされているようです。 proef.htmlをクリックすると、アクティブなクラスを設定する必要があります - ページ - 約 ありがとう – ceasar

+0

賛成:-)それは魅力のように機能します。 – ceasar

+0

私はちょうどそれをはるかに良くしました。私の更新されたバージョンでスクリプトを更新する必要があります。私はなぜ私が最初にやったようにそれについて行ったのか分かりません。 – Stephen

1

我々のようなものでした:

$("#sample-menu-1").find("a[href='"+window.location.pathname+"']").each(function() { 
$(this).parents('li').addClass("current"); 
$(this).closest('ul').css("visibility","visible").css("display","block"); 
}); 

動作するようだが、メニューマウスオーバーで、メニューは、現在の位置を保持していないが。

=== 更新 ===

親ULはメニューこれが唯一のアクティブリンクのための作品

+0

実際にはこのソリューションが最適です。選択された回答にネストされたメニューの問題があります。ありがとう! – user2519032

関連する問題