2014-02-20 145 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