如何在单击太阳菜单时确保顶级菜单项具有选定的CSS类?

时间:2012-06-13 06:55:34

标签: asp.net css menu tabs

我有标签和子标签的两个ASP.NET 4.0菜单控件 &页面上左侧导航的一个树控件

我正在使用选定的CSS类,以确保所选标签/子标签/导航采用不同颜色。< / p>

每当我选择其中一个控件的项目时,选择的CSS应用于,但父选择状态丢失

如何确保顶级菜单项在查看子页面时选择了CSS类

主菜单:

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />

<asp:Menu ID="mainMenu" runat="server" Orientation="Horizontal" 
MaximumDynamicDisplayLevels="0" RenderingMode="Table"
DataSourceID="SiteMapDataSource1"
ViewStateMode="Enabled">
<StaticMenuStyle CssClass="menu"/>
<StaticMenuItemStyle CssClass="menuItem"/>
<StaticSelectedStyle CssClass="menuSelectedItem"/>
</asp:Menu>

子菜单:

<asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" ShowStartingNode="false"     StartingNodeOffset="1"/>

<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" 
MaximumDynamicDisplayLevels="0" RenderingMode="Table"
DataSourceID="SiteMapDataSource2"
ViewStateMode="Enabled">
<StaticMenuStyle CssClass="menu"/>
<StaticMenuItemStyle CssClass="menuItem"/>
<StaticSelectedStyle CssClass="menuSelectedItem"/>
</asp:Menu>

左侧导航:

<asp:SiteMapDataSource ID="SiteMapDataSource3" runat="server" ShowStartingNode="false" 
StartingNodeOffset="2" />

<asp:TreeView ID="TreeView1" runat="server"
DataSourceID="SiteMapDataSource3" 
ExpandDepth="2" NodeIndent="0">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle ForeColor="#5555DD" />
<SelectedNodeStyle BackColor="GhostWhite"/>
<NodeStyle BackColor="LightSteelBlue"/>
</asp:TreeView>

CSS:

.menu
{
  background-color: black;
  font-size: 12px;
  font-family: Arial;
  font-weight: bold;
}
.menuItem td
{
  height: 24px;
  width: 120px; 
  background: url(Images/unselectedTab.jpg) no-repeat;
  text-align: center;
  vertical-align: middle;
}

.menuSelectedItem td
{
 height: 24px;
 width: 120px;
 background: url(Images/selectedTab.jpg) no-repeat;
 text-align:center;
 vertical-align:middle;  
}

1 个答案:

答案 0 :(得分:0)

没有读过您的代码,但根据我的意见,如果您想保留选中的父菜单项,那么您必须检查您的代码是否未被删除。在您的脚本中可能会有一些代码,如 -

$(this).parent().removeClass("selected");

注释此行是否存在并检查其是否有效。如果没有这样的东西那么你将不得不申请如下课程 -

$(this).parent().addClass("selected");

上面的两个代码行,你会发现在单击菜单时调用的函数内部。