我正在尝试创建子导航。现在我有两个subnav。当我将鼠标悬停在主菜单的第一项上时,相应的子菜单就会出现。但是,当我将鼠标悬停在第二个项目上时,第二个子导航会显示在第一个导航上。我如何编写代码以避免这种情况发生?如何删除子导航重叠?
$(document).ready(function() {
$('#arbNavText01').mouseover(function() {
$('#subNav01').show('slow');
});
$('#subNav01').mouseleave(function() {
$('#subNav01').hide('slow');
});
$('#arbNavText02').mouseover(function() {
$('#subNav02').show('slow');
});
$('#subNav02').mouseleave(function() {
$('#subNav02').hide('slow');
});
})
我只是想从斯科特下面的建议,我不能够显示和隐藏悬停的子菜单。任何想法如何解决这个问题?这里是我的新代码:
HTML
<div id="menu01" class="menu_item">
<div id="engNavText01">Alphabet</div>
<div id="arbNavText01">الأحرف</div>
<div id="subNav01" style="display:none;">
<a href="colors" class="subNav">
<span style="font-size:26px; cursor:pointer;">قراءة</span</a>
<br>reading<br><br>
</div>
</div>
<div id="menu02" class="menu_item">
<div id="engNavText02">Numbers</div>
<div id="arbNavText02">الأحرف</div>
<div id="subNav02" style="display: none; ">
<a href="colors" class="subNav">
<span style="font-size:26px; cursor:pointer;">قراءة</span</a>
<br>reading<br><br>
</div>
</div>
和JS
$(document).ready(function() {
$('.menu_item').children().hover(
function(){
$subNav = $(this).parents('menu_item').children("div[id^='subNav'");
if ($subNav.css('display', 'none')){
$subNav.show('slow');
}
},
function(){
$(this).parents('menu_item').children("div[id^='subNav'").hide('slow');
});
})
谢谢。这完美的作品,除了现在我必须为subnav的其余部分做同样的事情。我有八个,我不想在代码中重复自己。例如,是否有一种优雅的书写方式,以便有一个班级。在哪里我可以要求它一次只显示一个子菜单? – L1900
我正在寻找离开,把它们放在你的HTML文件中建议的方式。感谢我的代码改进。但是,js代码不起作用。 – L1900