添加悬停 class 到二级菜单链接
Add hover class to 2nd level menu links
我有一个垂直的大型菜单。当您将鼠标悬停在具有子项的 link 上时,它会在右侧显示另一个垂直菜单,依此类推。当您将鼠标悬停在那些关联的子菜单之外时,它们会隐藏并且菜单会重置。
我正在向父级 link 添加一个 class 以便悬停状态保持活动状态,这工作正常。但是,我的问题是具有子菜单的第 2 级 link。我正在尝试做完全相同的事情,但使用这些 links 但无论我尝试什么似乎都不起作用。
这就是我想要实现的,请注意当第 3 级菜单打开时,第 2 级页面 link 的背景是粉红色的:
这是我正在使用的 JS 和随附的 JSFiddle,向您展示我目前所处的阶段:http://jsfiddle.net/mz9abf43/2/
$( ".menu li.menu-item-has-children a, .menu li.menu-item-has-children > .drop" ).mouseover(function() {
$('.menu li.menu-item-has-children a').addClass('go');
$('.menu li.menu-item-has-children > .drop a').removeClass('go');
});
$( ".menu li.menu-item-has-children > .drop a" ).mouseover(function() {
$('.menu li.menu-item-has-children > .drop a').addClass('go');
});
$( ".menu li.menu-item-has-children > *" ).mouseout(function() {
$('.menu li.menu-item-has-children a').removeClass('go');
});
更新
我不致力于我一直在修补的 JS 解决方案,因此 CSS 解决方案没有问题。我只想要一个让它工作的解决方案。
基本解决方案,您可以将其与您需要的任何其他样式相辅相成
/* Hide all child lists */
li > ul {
display: none;
}
/* Hovering list item will cause the child menu to be displayed */
li:hover > ul {
display: block;
}
/* Default style for the menu item */
li {
color: black;
}
/* Hover style for each menu item, add more if you have more levels */
ul > li:hover,
ul > li > ul > li:hover,
ul > li > ul > li > ul > li:hover {
color: red;
}
<ul>
<li>
Item 1
<ul>
<li>
Item 1 a
</li>
<li>
Item 1 b
<ul>
<li>
Item 1 b I
</li>
<li>
Item 1 b II
</li>
<li>
Item 1 b III
</li>
</ul>
</li>
<li>
Item 1 c
</li>
</ul>
</li>
<li>
Item 1
</li>
<li>
Item 1
</li>
</ul>
简单的解决方案如下所示 css,
我做了什么:
- 删除您为此悬停功能添加的所有 JS 代码。
- 将 class
highlight
添加到所有需要在悬停时突出显示 (background-color:pink
) 的元素。
CSS 代码:
.highlight:hover {
background: pink;
}
//comment below css styles
/*.menu li a:hover,
.menu li a.go { background: pink; }*/
我有一个垂直的大型菜单。当您将鼠标悬停在具有子项的 link 上时,它会在右侧显示另一个垂直菜单,依此类推。当您将鼠标悬停在那些关联的子菜单之外时,它们会隐藏并且菜单会重置。
我正在向父级 link 添加一个 class 以便悬停状态保持活动状态,这工作正常。但是,我的问题是具有子菜单的第 2 级 link。我正在尝试做完全相同的事情,但使用这些 links 但无论我尝试什么似乎都不起作用。
这就是我想要实现的,请注意当第 3 级菜单打开时,第 2 级页面 link 的背景是粉红色的:
这是我正在使用的 JS 和随附的 JSFiddle,向您展示我目前所处的阶段:http://jsfiddle.net/mz9abf43/2/
$( ".menu li.menu-item-has-children a, .menu li.menu-item-has-children > .drop" ).mouseover(function() {
$('.menu li.menu-item-has-children a').addClass('go');
$('.menu li.menu-item-has-children > .drop a').removeClass('go');
});
$( ".menu li.menu-item-has-children > .drop a" ).mouseover(function() {
$('.menu li.menu-item-has-children > .drop a').addClass('go');
});
$( ".menu li.menu-item-has-children > *" ).mouseout(function() {
$('.menu li.menu-item-has-children a').removeClass('go');
});
更新 我不致力于我一直在修补的 JS 解决方案,因此 CSS 解决方案没有问题。我只想要一个让它工作的解决方案。
基本解决方案,您可以将其与您需要的任何其他样式相辅相成
/* Hide all child lists */
li > ul {
display: none;
}
/* Hovering list item will cause the child menu to be displayed */
li:hover > ul {
display: block;
}
/* Default style for the menu item */
li {
color: black;
}
/* Hover style for each menu item, add more if you have more levels */
ul > li:hover,
ul > li > ul > li:hover,
ul > li > ul > li > ul > li:hover {
color: red;
}
<ul>
<li>
Item 1
<ul>
<li>
Item 1 a
</li>
<li>
Item 1 b
<ul>
<li>
Item 1 b I
</li>
<li>
Item 1 b II
</li>
<li>
Item 1 b III
</li>
</ul>
</li>
<li>
Item 1 c
</li>
</ul>
</li>
<li>
Item 1
</li>
<li>
Item 1
</li>
</ul>
简单的解决方案如下所示 css,
我做了什么:
- 删除您为此悬停功能添加的所有 JS 代码。
- 将 class
highlight
添加到所有需要在悬停时突出显示 (background-color:pink
) 的元素。
CSS 代码:
.highlight:hover {
background: pink;
}
//comment below css styles
/*.menu li a:hover,
.menu li a.go { background: pink; }*/