2010-11-12 94 views
1

我目前有以下菜單結構中的母版中定義:修改現有的菜單,子菜單的使用jQuery

<asp:ContentPlaceHolder ID="SubNavigation" runat="server"> 
    <ul> 
    <li><%= RenderLink("item 1", "/item1/", null, null) %></li> 
    <li><%= RenderLink("item 2", "/item2/blah/", null, "nofollow")%></li> 
    <li><%= RenderLink("item 3", "/item3/blah/", null, "nofollow") %></li> 
    </ul> 
</asp:ContentPlaceHolder> 

隨着人們在工地附近導航RenderLink方法被調用,並檢查用戶是否當前在請求的頁面上,並將其呈現爲具有特定CSS的標記。

現在我想添加一個子菜單,如下所示:

<asp:ContentPlaceHolder ID="SubNavigation" runat="server"> 
    <ul> 
    <li><%= RenderLink("item 1", "/item1/", null, null) %></li> 
    <li><%= RenderLink("item 2", "/item2/blah/", null, "nofollow")%></li> 
    <li><%= RenderLink("item 3", "/item3/blah/", null, "nofollow") %></li> 
     <li class="topitem"> 
      <%= RenderLink("Item 4", "/Item4/blah/", null, null) %> 
      <ul class="sublist"> 
       <li class="subitem"> 
        <%= RenderLink("subitem4a", "/subitem4a/blah/", null, null) %></li> 
       <li class="subitem"> 
        <%= RenderLink("subitem4b", "/subitem4b/blah/", null, null) %></li> 
       <li class="subitem"> 
        <%= RenderLink("subitem4c", "/subitem4c/blah/", null, null) %></li> 
      </ul> 
     </li> 
    </ul> 

我試圖使用jquery,這樣,當在具有topitem用戶derected到該類項目的用戶點擊然後顯示相應的URL和子菜單,一旦用戶離開不是頂部項目的頁面或子菜單關閉的任何子項目。

我一直在嘗試以下的jQuery,但還沒有任何喜悅......

$(document).ready(function() { 
    $('li.topitem > a:first-child').siblings().toggle(); 
}); 

顯然這有一個連鎖反應,顯示/隱藏任何li.topitems和它的兄弟姐妹是不是效果如果在我的菜單結構中定義了另一個子菜單,那就很好。

在jQuery中處理這個問題的最好方法是什麼?

回答

0

我不確定這完全可以在jQuery中完成,或者如果這是正確的舉動。你綁定jquery函數的方式對我來說看起來很好。

如果您希望子菜單出現在某個頁面上,您應該通過某種類型的循環運行列表元素,以檢查您是否在正確的頁面上。你在這裏發佈的代碼基本上只是HTML標記。

我不知道ASP,但在PHP中,這是非常簡單的一個if/else循環。在if循環中,可以使條件成爲通過ASP抓取的URL傳遞的變量。