2014-02-20 143 views
1

Im使用菜單,因爲它是從 - http://cssmenumaker.com/builder/1501457。這像Jquery手風琴一樣工作,一次只保留一個面板。 當主菜單展開後,我點擊一個子菜單,它將導航到該頁面,但主菜單會摺疊頁面刷新。我怎樣才能保持它的固定。Jquery垂直菜單與導航崩潰

在Asp.Net Master頁面中使用它。

css和jquery在鏈接

回答

0

你不應該使用手風琴。因爲手風琴只同時打開一個標籤。嘗試使用slideDwon jquery

3

本頁提供的菜單使用javascript來動態更新菜單狀態。

這意味着您的html頁面是有狀態的,並且會出現問題,因爲您需要正確處理客戶端和服務器代碼之間的狀態轉換。

然後,您有三種可供選擇的解決方案:

  1. 傳送到您的客戶端應用程序的狀態(當前菜單)到你的ASP後臺,並重新生成基於這種狀態下,新頁面
  2. transer您的應用程序狀態,以你的ASP後臺併發送回客戶端瀏覽器,並確保這種狀態,然後由客戶端重新應用(使用JavaScript)
  3. 只能請求新的數據到你的ASP後臺並呈現在客戶端中的新頁面內容的JavaScript

此問題可能也是您未使用合適的工具構建菜單的症狀。你確實混合了服務器端和客戶端的渲染,並且從你的問題中可以看出,使用完整的服務器端渲染可能會更好。

+0

您可以用第一個選項進一步指導樣本 – Ruby

+0

此菜單對象大部分由客戶端JavaScript呈現。這有效地使解決方案1)難以實施和維護。我建議去替代方案2),並從菜單狀態從瀏覽器到服務器,然後返回到新頁面中的瀏覽器,作爲插入到html頁面中的javascript對象。這將使您能夠在客戶端重新應用所需的狀態。例如,您可以使用jQuery根據服務器提供的狀態來模擬所需菜單上的點擊。 –

1

在當前菜單的li中添加活動類,並添加style =「display:block;」到您希望顯示爲開放的孩子ul元素。

<ul> 
    <li><a href='index.html'><span>Home</span></a></li> 
    <li class='has-sub active'><a href='#'><span>Products</span></a> 
     <ul style="display: block;"> 
     <li><a href='#'><span>Widgets</span></a></li> 
     <li><a href='#'><span>Menus</span></a></li> 
     <li class='last'><a href='#'><span>Products</span></a></li> 
     </ul> 
    </li> 
    <li class='has-sub'><a href='#'><span>Company</span></a> 
     <ul> 
     <li><a href='#'><span>About</span></a></li> 
     <li class='last'><a href='#'><span>Location</span></a></li> 
     </ul> 
    </li> 
    <li class='last'><a href='#'><span>Contact</span></a></li> 
</ul> 
+0

放置活動並顯示:塊爲'產品'。它現在僅適用於產品菜單。公司菜單像以前一樣崩潰。所以我也爲此做了阻擋。現在,兩個主菜單在頁面加載時都顯示爲擴展,並且作爲其激活的產品,即使在顯示其他頁面時也始終展開 – Ruby

+0

嗯,我想我還不夠清楚。我建議將它作爲顯示當前子菜單的方式,因爲您正在重新加載頁面。這意味着你不知何故(服務器端或客戶端)將這些活動類添加到正確的li中,每次將頁面和樣式塊重新加載到它的子ul時。 所以你必須找到一種方法來添加這些每次頁面重新加載。 – MentalRay