Javascript 如何在悬停模式下显示子菜单
我有一个带有子菜单(垂直)的菜单。我的第一个Javascript 如何在悬停模式下显示子菜单,javascript,jquery,html,css,menu,Javascript,Jquery,Html,Css,Menu,我有一个带有子菜单(垂直)的菜单。我的第一个li通过子菜单处于活动状态。 我的问题是,当我将鼠标悬停在另一个li中时,我在上一个菜单中添加了子菜单 我需要的是: 当我将鼠标悬停在菜单中时,仅获取当前li的子菜单 当我的光标未悬停在我的菜单中时,要获取类上有的默认子菜单 这是JSFIDLE的链接 这是我的代码: <nav> <div id="menuu"> <ul class="niveau
li
通过子菜单处于活动状态。
我的问题是,当我将鼠标悬停在另一个li
中时,我在上一个菜单中添加了子菜单
我需要的是:
- 当我将鼠标悬停在菜单中时,仅获取当前li的子菜单
- 当我的光标未悬停在我的菜单中时,要获取类上有
的默认子菜单
<nav>
<div id="menuu">
<ul class="niveau1">
<li><a id="lrf" class="sousmenu" href="#">Test 1</a>
<ul id="lrfH" class="niveau2 on">
<li><a href="#">ss test 1</a></li>
<li><a href="#">ss test 2</a></li>
</ul>
</li>
<li><a id="cm" class="sousmenu" href="#">Test 2</a>
<ul id="cmH" class="niveau2">
<li><a href="#">ss test 1</a></li>
<li><a href="#">ss test 2</a></li>
</ul>
</li>
<li><a id="dj" class="sousmenu" href="#">Test 3</a>
<ul id="djH" class="niveau2">
<li><a href="#">ss test 1</a></li>
<li><a href="#">ss test 2</a></li>
</ul>
</li>
</ul>
</div>
</nav>
JS代码
$(document).ready(function(e){
$('.sousmenu').hover(function(e){
e.preventDefault();
var getID=$(this).attr('id');
$("#"+getID+"H").css("visibility","visible");
$(".on").css("visibility","hidden");
});
});
试试这个:
$(文档).ready(函数(e){
$('.sousmenu')。悬停(函数(e){
e、 预防默认值();
var getID=$(this.attr('id');
$(“.niveau2”).hide();
$(“#”+getID+“H”).show();
});
});代码>
#menuu ul{
保证金:0;
填充:0;
左侧填充:97px;
线高:30px;
}
#李美努{
浮动:左;
列表样式:外部无;
}
苏斯穆努先生{
颜色:#000!重要;
文字装饰:无;
宽度:150px;
高度:30px;
显示:块;
文本对齐:居中;
边框:1px实心#000;
}
.niveau2{
左边距:-50px!重要;
}
.niveau2 a{
左侧填充:20px!重要;
文字装饰:无;
颜色:红色;
}
.sousmenu:悬停{
颜色:#fff!重要;
背景色:#ddd;
边框底色:#000!重要;
}
#梅努乌尔{
位置:绝对位置;
可见性:隐藏;
左侧填充:0px;
}
#梅努·乌利:盘旋在a上{
颜色:#000;
}
#梅努乌尔{
左:152px;
顶部:-0.5px;
显示:无;
}
#梅努乌尔利:悬停{
能见度:可见;
}
.niveau2.on{
可见性:可见!重要;
}
-
-
-
试试这个:
$(文档).ready(函数(e){
$('.sousmenu')。悬停(函数(e){
e、 预防默认值();
var getID=$(this.attr('id');
$(“.niveau2”).hide();
$(“#”+getID+“H”).show();
});
});代码>
#menuu ul{
保证金:0;
填充:0;
左侧填充:97px;
线高:30px;
}
#李美努{
浮动:左;
列表样式:外部无;
}
苏斯穆努先生{
颜色:#000!重要;
文字装饰:无;
宽度:150px;
高度:30px;
显示:块;
文本对齐:居中;
边框:1px实心#000;
}
.niveau2{
左边距:-50px!重要;
}
.niveau2 a{
左侧填充:20px!重要;
文字装饰:无;
颜色:红色;
}
.sousmenu:悬停{
颜色:#fff!重要;
背景色:#ddd;
边框底色:#000!重要;
}
#梅努乌尔{
位置:绝对位置;
可见性:隐藏;
左侧填充:0px;
}
#梅努·乌利:盘旋在a上{
颜色:#000;
}
#梅努乌尔{
左:152px;
顶部:-0.5px;
显示:无;
}
#梅努乌尔利:悬停{
能见度:可见;
}
.niveau2.on{
可见性:可见!重要;
}
-
-
-
如果您真的想依赖hover,您可以不用JavaScript,只需使用CSS即可。看见(小提琴的问题是您使子菜单可见,但在mouseleave上不再不可见。)但是,不建议仅使用悬停,因为它在无法检测悬停的设备上不起作用。尝试此操作,希望这能解决您的问题。但是我需要激活第一个li,我可以第一次看到子菜单,如果我将第二个li悬停在第一个li上,如果你真的想依赖悬停,你可以不用JavaScript,只需使用CSS。看见(小提琴的问题是您使子菜单可见,但在mouseleave上不再不可见。)但是,不建议仅使用悬停,因为它在无法检测悬停的设备上不起作用。尝试此操作,希望这能解决您的问题。但是我需要第一个li处于活动状态,并且我可以第一次看到子菜单,如果我将第二个li悬停在第一个li上,请感谢回复,但我认为当我将鼠标悬停在第二个li
上时,他们有问题,这很好,但是当我的光标离开菜单时,我没有处于活动状态的默认菜单,默认菜单包含一个打开类
感谢您的回复,但我认为当我在第二个li
中悬停时,他们有问题,它工作得很好,但是当我的光标不在菜单中时,我没有默认菜单,因为默认菜单处于活动状态,默认菜单包含类
$(document).ready(function(e){
$('.sousmenu').hover(function(e){
e.preventDefault();
var getID=$(this).attr('id');
$("#"+getID+"H").css("visibility","visible");
$(".on").css("visibility","hidden");
});
});