jQuery:如何创建一个菜单和子菜单,每次单击时类都会在其中切换
jQuery: How to create a menu and a submenu where the classes toggle on each click
我有这个JS小提琴:
https://jsfiddle.net/zczwjdrw/7/
菜单1:
单击AAA时,会打开一个菜单。当点击BBB时,它会打开另一个菜单,并将AAAs样式删除为默认样式。当再次点击BBB时,它会关闭子菜单,但不会变回默认值。我该如何解决此问题?
菜单2:
当点击一个子菜单选项时,它会给它上色。当点击另一个选项时,不会从上一个元素中删除类。并且您可以继续为所有子菜单选项着色。解决这个问题的办法是什么?我在jQuery上使用了与.sidebar1
相同的功能。
jQuery:
$('.sidebar1 a').click(function(){
$(this).addClass('active-sb1').siblings().removeClass('active-sb1');
});
$('.sidebar2 a').click(function(){
$(this).addClass('active-sb2').siblings().removeClass('active-sb2');
});
HTML:
<div class="main-wrapper">
<div class="sidebar1">
<a href="ssb1" class="category" id="sb1" onclick="return false">
<div>AAA</div>
</a>
<a href="ssb2" class="category" id="sb2" onclick="return false">
<div>BBB</div>
</a>
<a href="ssb3" class="category" id="sb3" onclick="return false">
<div>CCC</div>
</a>
</div>
<div class="sidebar2" id="ssb1" style="display: none;">
<div class="sb2-content">
<h3>Choose Something:</h3>
</div>
<div class="sb2-menu">
<ul>
<li>
<a href="kas" onclick="return false">AAAAAAAAAAAAA</a>
</li>
<li>
<a href="weekly_reports" onclick="return false">AAAAAAAAAAA</a>
</li>
<li>
<a href="exceltower" onclick="return false">AAAAAAAAAAA</a>
</li>
</ul>
</div>
</div>
<div class="sidebar2" id="ssb2" style="display: none;">
<div class="sb2-content">
<h3>Choose Something:</h3>
</div>
<div class="sb2-menu">
<ul>
<li>
<a href="#">BBBBBBBBBB</a>
</li>
<li>
<a href="#">BBBBBBBBBB</a>
</li>
<li>
<a href="#">BBBBBBBBBB</a>
</li>
</ul>
</div>
</div>
<div class="sidebar2" id="ssb3" style="display: none;">
<div class="sb2-content">
<h3>Choose Something:</h3>
</div>
<div class="sb2-menu">
<ul>
<li>
<a href="#">CCCCCCCCC</a>
</li>
<li>
<a href="#">CCCCCCCC</a>
</li>
<li>
<a href="#">CCCCCCCC</a>
</li>
</ul>
</div>
</div>
<div class="main-content">
<div class="user-bar">
</div>
<div class="content">
</div>
</div>
</div>
在.sidebar2
中,<a>
元素位于<li>
内部,因此<a>
没有其他同级元素。但父母<li>
有兄弟姐妹。所以,你可以试试这样的东西:
$('.sidebar2 a').click(function() {
var e = $(this);
e.addClass('active-sb2');
e.parent().siblings().children().removeClass('active-sb2');
});
对于第一个问题,您可以测试该元素是否已经具有类active-sb1
,这意味着该元素是打开的,在这种情况下,您可以删除该类。
$('.sidebar1 > a').click(function() {
var e = $(this);
if (e.hasClass("active-sb1")) {
e.removeClass('active-sb1');
} else {
e.addClass('active-sb1');
}
e.siblings().removeClass('active-sb1');
});
更新的Fiddle链接
相关文章:
- JQuery在单击正文时隐藏上下文菜单
- 通过单击同一图标使菜单出现和消失
- 引导菜单没有't在导航栏中单击打开
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 单击图像后如何创建下拉菜单?[引导/角度]
- 单击事件打开两个弹出菜单
- 单击删除下拉子菜单
- 使用Jquery创建一个具有单击和悬停功能的菜单
- 悬停时展开垂直下拉菜单,而不是单击
- 切换菜单仅在单击时打开,而不是默认情况下打开
- 单击下拉菜单时,将文本粘贴到输入框中
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 阻止在单击和关闭覆盖菜单css时滚动正文
- 通过单击主菜单外部关闭子菜单'不适用于IE,但适用于Firefox&铬
- 引导两个响应菜单-单击另一个菜单按钮时折叠一个菜单
- jQuery UI链接选择菜单.单击按钮时窗体将重置
- CSS 菜单 - 单击时的子菜单 (JS)
- Jquery下拉菜单.单击时,子菜单将消失.因此,如何使子菜单在单击时保持不变
- 多个下拉菜单-单击不关闭
- Accordian菜单(单击时)影响图像在下一个表格单元格中的位置