jquery - 打开另一个下拉菜单时如何关闭相邻的下拉菜单
问题描述
我正在尝试为结果页面设置过滤器列表。但我一次只想要三个活动列表中的一个。我正在使用 jQuery 来显示/隐藏列表。
这是我正在研究的精简版。 https://jsfiddle.net/JeffSydor/bgpw9x60/
$('.dropMenu ul').css('display', 'none');
$('.dropMenu').click(function() {
var thisMenu = $(this).children('.listName'),
thisList = $(this).children('ul');
if (thisMenu.not('.open')) {
thisMenu.toggleClass('open');
thisList.slideToggle();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="lists">
<div class="dropMenu">
<div class="listName">
<p class="authors">Contributors</p>
<i class="fas fa-caret-down"></i>
</div>
<ul>
<li><a href="#" class="author">name01</a></li>
<li><a href="#" class="author">name02</a></li>
</ul>
</div>
<div class="dropMenu">
<div class="listName">
<p class="categories">Categories</p>
<i class="fas fa-caret-down"></i>
</div>
<ul>
<li><a href="#" class="category">cat01</a></li>
<li><a href="#" class="category">cat02</a></li>
</ul>
</div>
<div class="dropMenu">
<div class="listName">
<p class="tags">Tags</p>
<i class="fas fa-caret-down"></i>
</div>
<ul>
<li><a href="#" class="tag">tag01</a></li>
<li><a href="#" class="tag">tag02</a></li>
</ul>
</div>
</div>
我试图弄清楚如何在单击其他任何菜单时查找其他打开的菜单并关闭它们。
我也研究了 preventDefaults ,但这对我来说没有任何意义,或者它是否会起作用。
解决方案
在打开新的之前选择打开的并关闭它们
$('.dropMenu ul').css('display', 'none');
$('.dropMenu').click(function() {
var thisMenu = $(this).children('.listName'),
thisList = $(this).children('ul');
if (thisMenu.not('.open')) {
$('.dropMenu .open').removeClas('open')
thisMenu.toggleClass('open');
thisList.slideToggle();
}
});
推荐阅读
- talend - 使用 tFileInputDelimited 从 CSV 读取 int 值时出错错误:对于输入字符串:“10617,,,,”
- python - Python 3.7.2 Turtle 源文件夹特定的错误消息
- python - 如何使用pickle保存sklearn模型
- ninject - 什么是 NInjects 相当于 TryAdd
- java - JNA 中的 RasEnumConnections 函数返回不完整的数据。我做错了什么?
- javascript - HTML/CSS/JS - 模式弹出窗口的覆盖背景 - 问题
- java - 循环数组队列中余数操作数的意义是什么
- java - 如何在 JAVA (android) 中将变量设置为 0.001
- python - Python:如何检查两个字符串的匹配字符数?
- php - 使用正则表达式后如何从url获取值?