Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除子导航重叠?_Javascript_Jquery_Navigation_Hover_Submenu - Fatal编程技术网

Javascript 如何删除子导航重叠?

Javascript 如何删除子导航重叠?,javascript,jquery,navigation,hover,submenu,Javascript,Jquery,Navigation,Hover,Submenu,我正在尝试创建一个子导航。现在我有两个亚纳伏。当我将鼠标悬停在主菜单上的第一项上时,会出现相应的子菜单。但当我将鼠标悬停在第二项上时,第二个子导航将出现在第一项上。如何编写代码以避免这种情况发生 网址: 我刚刚尝试了Scott的以下建议,但我无法在hover上显示和隐藏子菜单。有没有办法解决这个问题?以下是我的新代码: html 您已经创建了mouseleave事件,但只将其附加到子菜单。因此,为了使菜单消失,用户必须将鼠标悬停在子菜单上,然后移出。您可以通过在打开新子菜单之前隐藏其他子菜单来实

我正在尝试创建一个子导航。现在我有两个亚纳伏。当我将鼠标悬停在主菜单上的第一项上时,会出现相应的子菜单。但当我将鼠标悬停在第二项上时,第二个子导航将出现在第一项上。如何编写代码以避免这种情况发生

网址:

我刚刚尝试了Scott的以下建议,但我无法在hover上显示和隐藏子菜单。有没有办法解决这个问题?以下是我的新代码:

html


您已经创建了mouseleave事件,但只将其附加到子菜单。因此,为了使菜单消失,用户必须将鼠标悬停在子菜单上,然后移出。您可以通过在打开新子菜单之前隐藏其他子菜单来实现所需的功能。因此,保持mouseleave事件不变,您可以将2个mouseover事件修改为:

    $('#arbNavText01').mouseover(function()  {
        $('#subNav02').hide('slow');
        $('#subNav01').show('slow');
    });
    $('#arbNavText02').mouseover(function()  {
        $('#subNav01').hide('slow');
        $('#subNav02').show('slow');
    });
编辑以供评论: 当我最初去看你的页面时,我正在考虑这个问题。我认为如果你在html中使用稍微不同的结构,这是可以做到的。现在,菜单div在结构上彼此之间没有明显的关联,因此可以添加一个div,其中可以包含与每个菜单项关联的3个元素

我要把一个想法抛诸脑后,它甚至可能不起作用,更不用说是最好的方法了

<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">...

我试着用一个,看起来不错。您的使用可能需要一些修改。

谢谢。这是完美的,除了现在我必须在接下来的比赛中做同样的事情。我有八个,我不想在代码中重复我自己。例如,是否有一种优雅的写作方式,以便有一个类。在哪里我可以要求它一次只显示一个子菜单?我一直在寻找如何按照您在我的html文件中建议的方式将它们放在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');
});

})
    $('#arbNavText01').mouseover(function()  {
        $('#subNav02').hide('slow');
        $('#subNav01').show('slow');
    });
    $('#arbNavText02').mouseover(function()  {
        $('#subNav01').hide('slow');
        $('#subNav02').show('slow');
    });
<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">...
$('.menu_item').hover(
    function(){
        $subNav = $(this).children("div[id^='subNav']");
        if ($subNav.css('display', 'none')){
            $subNav.show('slow');
        }
    },
    function(){
        $(this).children("div[id^='subNav']").hide('slow');
    }
);