简体   繁体   English

如何使选定的菜单保持选定的jQuery,CSS,html

[英]how to make the selected menu stay selected jquery, css , html

accordian menu , has to make the submenu to stay selected after clicking by js. Accordian菜单,必须通过js单击后使子菜单保持选中状态。 or css . 或CSS。

not the static solution in html. 不是html中的静态解决方案。 need solution comprising jquery and the css it should appear same as hovering after clicked 需要包含jquery和css的解决方案,它应与单击后的悬停效果相同

check out the fiddle 查看小提琴

https://jsfiddle.net/shaswatatripathy/ucgff65k/ https://jsfiddle.net/shaswatatripathy/ucgff65k/

 $(document).ready(function() { $("#accordion > li > div").click(function() { $("#submenu li").slideUp(); if (!$(this).next().is(":visible")) { $(this).next().slideDown(); } }); }); 
 .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; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <ul id="accordion" class="accordion"> <li> <div class="link">Menu 2</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> <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> 

Hope this is what you're looking for, 希望这是您想要的,

 $(document).ready(function() { $("#accordion > li > div").click(function() { $("#submenu li").slideUp(); if (!$(this).next().is(":visible")) { $(this).next().slideDown(); } }); $(".submenu li a").click(function(){ $(".submenu li a.active").removeClass("active"); $(this).addClass("active"); }); }); 
 .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; } .submenu li a.active { 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 2</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> <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> 

Create an .active class for the <a> tag inside <li> which matches the CSS of the :hover state of <a> , like this: 创建.active为类<a>内标签<li>其中的CSS相符:hover的状态<a> ,如下所示:

a.active {
  background: #b63b4d;
  color: #FFF;
}

And then just use the click event listener to add and remove this class when clicked on the submenu: 然后,在子菜单上单击时,只需使用click事件监听器即可添加和删除此类:

 $(document).ready(function() {

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

   $(".submenu a").click(function() {
            $(this).toggleClass("active").parent().siblings().find("a").removeClass("active");
   });

 });

I also modified to jQuery so that the accordion closes when it is clicked on in the open state. 我还修改了jQuery,以便在打开状态下单击手风琴时将其关闭。

Here's the working jsfiddle: https://jsfiddle.net/ucgff65k/2/ And the code snippet: 这是工作中的jsfiddle: https ://jsfiddle.net/ucgff65k/2/和代码片段:

  $(document).ready(function() { $("#accordion > li > div").click(function() { if (!$(this).next().is(":visible")) { $(this).next().slideDown(); } else { $(this).next().slideUp(); } }); $(".submenu a").click(function() { $(this).toggleClass("active").parent().siblings().find("a").removeClass("active"); }); }); 
 .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 a:hover { background: #b63b4d; color: #FFF; } a.active { 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 2</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> <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> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM