javascript - 下拉菜单无法正确打开和关闭
问题描述
将鼠标悬停在导航链接上时,我已经打开和关闭了它,但是如何保持打开状态以便访问菜单上的内容?我需要它来准确地工作下拉菜单的工作方式。
这是我到目前为止所做的,我还需要 html 布局保持不变。
$('.nav-link--dropdown').mouseover(function() {
$('.dropdown-menu').css('display', 'block');
});
$('.nav-link--dropdown').mouseleave(function() {
$('.dropdown-menu').css('display', 'none');
});
ul {
list-style: none;
padding: 0px;
display: flex;
}
li {
margin-right: 10px;
}
.dropdown-menu {
display: none;
}
.dropdown-menu ul {
display: block;
background-color: grey;
color: white;
padding: 10px;
text-align: center;
width: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="nav">
<ul>
<li class="nav-link">home</li>
<li class="nav-link--dropdown">dropdown</li>
</ul>
</div>
<div class="dropdown-menu">
<ul>
<li class="dropdown-menu__link">random text</li>
<li class="dropdown-menu__link">random text</li>
<li class="dropdown-menu__link">random text</li>
</ul>
</div>
解决方案
应该为此删除边距使用填充,否则当我们进入该边距区域时将触发鼠标离开事件。
$('.nav-link--dropdown').mouseover(function () {
$('.dropdown-menu').css('display', 'block');
});
$('.dropdown-menu').mouseover(function () {
$('.dropdown-menu').css('display', 'block');
});
$('.nav-link--dropdown').mouseleave(function () {
$('.dropdown-menu').css('display', 'none');
});
$('.dropdown-menu').mouseleave(function () {
$('.dropdown-menu').css('display', 'none');
});
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
ul {
list-style: none;
padding: 0px;
display: flex;
}
li {
padding: 10px;
}
.dropdown-menu {
display: none;
}
.dropdown-menu ul {
display: block;
background-color: grey;
color: white;
padding: 10px;
text-align: center;
width: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div class="nav">
<ul>
<li class="nav-link">home</li>
<li class="nav-link--dropdown">dropdown</li>
</ul>
</div>
<div class="dropdown-menu">
<ul>
<li class="dropdown-menu__link">random text</li>
<li class="dropdown-menu__link">random text</li>
<li class="dropdown-menu__link">random text</li>
</ul>
</div>
推荐阅读
- java - 如何将片段放入选项卡中?
- wordpress - 通过url接收godot中的参数
- xml - Error 'Public Function Year(DateValue As Date) As Integer' when using VBScript extension functions from within XSLT using msxsl:script
- flutter - 用 freeze 定义多态 copyWith 方法
- ios - 如何使用 DateComponentsFormatter 在 HH:MM 中格式化从 00:00 开始的时间间隔偏移量
- date - 显示/打印显示枢轴点日期的标签
- php - PHP 电子邮件:尽管发送了电子邮件,但没有显示任何数据
- javascript - HTML 中的字符串 (es6_string_html) -> 错误:语法错误 jQuery(1.9.1)
- r - 有没有一种快速的方法来比较 R 中的两个向量列表?
- reactjs - Reactjs、Nextjs、Nestjs、GraphQL、PostgreSQL、RabbitMQ 和 Kafka 如何协同工作?