jquery - 在外部单击时关闭由 .slideToggle 操作的 jQuery 菜单
问题描述
我见过一些类似的问题,但我的菜单打开/关闭功能是由 slideToggle() 而不是类操作的,我宁愿不更改我的 CSS 以使其工作。
当用户单击页面上的其他任何位置时,我需要关闭菜单。
HTML:
<div class="select">
<button class="select__selector">Reveal menu</button>
<ul class="select__select">
<li class="select__option"><a></a></li>
<li class="select__option"><a></a></li>
...
</ul>
</div>
JS:
var langTrigger = jQuery('.select__selector');
var langList = jQuery('.select__select');
// Trigger active state.
langTrigger.click(function() {
langTrigger.toggleClass('open');
langList.slideToggle(200);
});
// Close list when page is loading.
langList.click(function() {
langTrigger.click();
});
我已经尝试了一些东西,但这与我所得到的一样接近。
if((langTrigger).hasClass('open')) {
jQuery('body').on('click', function() {
langList.css({display: 'none'});
});
}
解决方案
添加一个 div 并将其放置在您的整个网站上,如下所示:
<div class="overlay"</div>
.overlay{
display: none;
position: fixed;
width: 100%;
height: 100%;
z-index: 9999;
}
然后是这样的:
$('.opensmenu').click(function(){
$('.menu').toggle();
$('.overlay').show();
});
$('.overlay').click(function(){
$('.menu').hide();
$(this).hide();
});
推荐阅读
- wordpress - 包括与 Elementor 不兼容的外部 jquery 插件
- node.js - 如何将环回连接到时间刻度数据库?
- sql-server - 获取 Pymssql 不是 AWS RDS Microsoft SQL Server 数据库的脚本化数据库连接问题
- ios - 为什么 Appium Inspector 很慢?
- android - 某些设备中未生成 Firebase 令牌
- java - 在 Java 中创建一个新数组的成本是多少?
- r - 如何使用 geom_text 在箱形图(ggplot2)中每个框的顶部添加文本?
- pyspark - Pyspark RDD 消除值中的无?
- zsh - 排除包含 $ 用于 rsync 副本的文件和目录
- android-studio - 无法在 AndroidStudio 4.2.1 上投射 InlineByteBuddyMockMaker