jQuery悬停显示,当鼠标移开时隐藏

时间:2019-09-26 17:59:50

标签: jquery html hover hide show

我有一个要与汉堡菜单类似工作的div。当鼠标悬停在 #Nnav 上时, .dd 应该出现,然后在悬停时再次消失。我不知道缺少什么,但div始终可见(尝试使用CSS对其进行隐藏,然后始终保持隐藏状态)。到目前为止,这是我的代码:

HTML:

<div id="menu">
 <img class="Nmenu" id="Nnav" src="images/nav.png">
  <div class="Nmenu" id="dd">
   <div class="Nmenu" id="dropdown"></div>
    <a class="Nmenu buttons" id="B1" href="#">Page 1</a>
    <a class="Nmenu buttons" id="B2" href="#">Page 2</a>
    <a class="Nmenu buttons" id="B3" href="#">Page 3</a>
 </div> </div>

CSS:

#dd {display: none;}

jQuery:

$("#Nnav").on({
mouseover: function() {
    $("#dd").stop().show();
},
mouseout: function() {
    $("#dd").stop().hide();
} })

4 个答案:

答案 0 :(得分:1)

#dd {
    display: none;
}
#Nnav:hover + #dd {
    display: block;
}
<div id="menu">
    <img class="Nmenu" id="Nnav" src="https://via.placeholder.com/50">
    
    <div class="Nmenu" id="dd">
        <div class="Nmenu" id="dropdown"></div>
        <a class="Nmenu buttons" id="B1" href="#">Page 1</a>
        <a class="Nmenu buttons" id="B2" href="#">Page 2</a>
        <a class="Nmenu buttons" id="B3" href="#">Page 3</a>
    </div>
</div>

但是,这不能用作菜单切换器,因为一旦离开图像,菜单就会消失。您需要将菜单作为子元素:

#dd {
    display: none;
}

#Nnav {
    display: inline-block;
}

#Nnav:hover #dd {
    display: block;
}
<div id="Nnav">
    <img class="Nmenu" src="https://via.placeholder.com/50">

    <div class="Nmenu" id="dd">
        <div class="Nmenu" id="dropdown"></div>
        <a class="Nmenu buttons" id="B1" href="#">Page 1</a>
        <a class="Nmenu buttons" id="B2" href="#">Page 2</a>
        <a class="Nmenu buttons" id="B3" href="#">Page 3</a>
    </div>
</div>

答案 1 :(得分:1)

嗨,如果您想使用jQuery,只需打开/关闭该类

$("#Nnav").on({
    mouseover: function() {
            $("#dd").toggleClass('dd');
    },
    mouseout: function() {
            $("#dd").toggleClass('dd');
    }
})

here

答案 2 :(得分:0)

CSS选择器错误。选择ID为ID的元素时需要#

#dd {
  display: none;
}

答案 3 :(得分:0)

我认为问题出在CSS上。 dd不是一个类,它是一个id。应该是#dd {display:none;}而不是.dd {display:none;}