gpt4 book ai didi

javascript - 如何使 Accordion 菜单中的单个主菜单处于事件状态(具有颜色)-jquery,javascript

转载 作者:行者123 更新时间:2023-11-30 15:16:08 25 4
gpt4 key购买 nike

这是 fiddle https://jsfiddle.net/shaswatatripathy/ucgff65k/13/

如您所见,菜单 2 没有任何子项,如何使“菜单 2”在单击时具有颜色(悬停子菜单时出现的颜色相同)

JS

 $(document).ready(function () {

$("#accordion > li > div").click(function () {
$("#submenu li").slideUp();
if (!$(this).next().is(":visible")) {
$(this).next().slideDown();
}
});
});

HTML

<ul id="accordion" class="accordion">
<li>
<div class="link">Menu 1</div>
<ul class="submenu">
<li ><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
</ul>
</li>
<li>
<ul class="link">Menu 2</ul>
</li>
<li>
<div class="link">Menu 3</div>
<ul class="submenu">
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
</ul>
</li>
</ul>

CSS

.accordion {
width: 100%;
max-width: 260px;
background: #FFF;
margin: 0;
padding: 0;
box-sizing:border-box;

}



.accordion .link {
cursor: pointer;
display: block;
padding: 15px 15px 15px 42px;
font-size: 14px;
font-weight: 700;
border-top: 1px solid #CCC;
border-bottom: 1px solid #CCC;
border-right: 1px solid #CCC;
position: relative;
-webkit-transition: all 0.4s ease;
-o-transition: all 0.4s ease;
transition: all 0.4s ease;
}





/*-------------Submenu-----------------------------*/


.submenu {
padding:0px;
display: none;
font-size: 14px;
}

.submenu li { border-bottom: 1px solid #4b4a5e; }

.submenu a {
display: block;
text-decoration: none;
color: #23222d;
background-color:#CCC;
padding: 12px;
padding-left: 42px;
-webkit-transition: all 0.25s ease;
-o-transition: all 0.25s ease;
transition: all 0.25s ease;
}

#submenu li.active {
display: block;
}

.submenu a:hover {
background: #b63b4d;
color: #FFF;
}

最佳答案

  • 您可以为菜单 2 分配具有背景或颜色的新类 (.m2color)
  • 使用点击处理程序将 toggleClass 添加到 menu2

经过编辑的片段使 slideUp 在重新单击打开的菜单或 menu2 时也能正常工作:

$(document).ready(function() {
$("#accordion > li > div").on("click", function() {
$(this).next().slideUp();
if (!$(this).next().is(":visible")) {
$(this).next().slideDown();
$(".menu2").removeClass("m2color");
}
});
$(".menu2").on("click", function() {
$(this).toggleClass("m2color");
$("#accordion > li > div").next().slideUp();
})
});
.accordion {
width: 100%;
max-width: 260px;
background: #FFF;
margin: 0;
padding: 0;
box-sizing: border-box;
}

.accordion .link {
cursor: pointer;
display: block;
padding: 15px 15px 15px 42px;
font-size: 14px;
font-weight: 700;
border-top: 1px solid #CCC;
border-bottom: 1px solid #CCC;
border-right: 1px solid #CCC;
position: relative;
-webkit-transition: all 0.4s ease;
-o-transition: all 0.4s ease;
transition: all 0.4s ease;
}


/*-------------Submenu-----------------------------*/

.submenu {
padding: 0px;
display: none;
font-size: 14px;
}

.submenu li {
border-bottom: 1px solid #4b4a5e;
}

.submenu a {
display: block;
text-decoration: none;
color: #23222d;
background-color: #CCC;
padding: 12px;
padding-left: 42px;
-webkit-transition: all 0.25s ease;
-o-transition: all 0.25s ease;
transition: all 0.25s ease;
}

#submenu li.active {
display: block;
}

.submenu a:hover {
background: #b63b4d;
color: #FFF;
}

.m2color {
background: #b63b4d;
color: #FFF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="accordion" class="accordion">
<li>
<div class="link">Menu 1</div>
<ul class="submenu">
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
</ul>
</li>
<li>
<ul class="link menu2">Menu 2</ul>
</li>
<li>
<div class="link">Menu 3</div>
<ul class="submenu">
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
</ul>
</li>
</ul>

原始片段:

$(document).ready(function() {

$("#accordion > li > div").click(function() {
$("#submenu li").slideUp();
if (!$(this).next().is(":visible")) {
$(this).next().slideDown();
//remove color when other menu option are clicked
$(".menu2").removeClass("m2color");
}
});
// you can remove the color by re-clicking on menu 2 as well
$(".menu2").on("click", function() {
$(this).toggleClass("m2color");
})
});
.accordion {
width: 100%;
max-width: 260px;
background: #FFF;
margin: 0;
padding: 0;
box-sizing: border-box;
}

.accordion .link {
cursor: pointer;
display: block;
padding: 15px 15px 15px 42px;
font-size: 14px;
font-weight: 700;
border-top: 1px solid #CCC;
border-bottom: 1px solid #CCC;
border-right: 1px solid #CCC;
position: relative;
-webkit-transition: all 0.4s ease;
-o-transition: all 0.4s ease;
transition: all 0.4s ease;
}


/*-------------Submenu-----------------------------*/

.submenu {
padding: 0px;
display: none;
font-size: 14px;
}

.submenu li {
border-bottom: 1px solid #4b4a5e;
}

.submenu a {
display: block;
text-decoration: none;
color: #23222d;
background-color: #CCC;
padding: 12px;
padding-left: 42px;
-webkit-transition: all 0.25s ease;
-o-transition: all 0.25s ease;
transition: all 0.25s ease;
}

#submenu li.active {
display: block;
}

.submenu a:hover {
background: #b63b4d;
color: #FFF;
}


/* new class*/

.m2color {
background: #b63b4d;
color: #FFF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="accordion" class="accordion">
<li>
<div class="link">Menu 1</div>
<ul class="submenu">
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
</ul>
</li>
<li>
<ul class="link menu2">Menu 2</ul>
</li>
<li>
<div class="link">Menu 3</div>
<ul class="submenu">
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
<li><a href="#">submenu1</a></li>
</ul>
</li>
</ul>

关于javascript - 如何使 Accordion 菜单中的单个主菜单处于事件状态(具有颜色)-jquery,javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44436216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com