简体   繁体   English

html 菜单和子菜单处于活动状态

[英]html menu and sub menu active

I assign an active class in my menu, but the active class is not removed from the mobile menu, it always remains active.我在菜单中分配了一个活动类,但活动类并未从移动菜单中删除,它始终保持活动状态。 And also, if the subcategory is selected, I want the category itself to have an active class.而且,如果选择了子类别,我希望类别本身有一个活动类。 I tried, I couldn't.我试过了,不能。 Thank you in advance to the friends who helped.先谢谢帮助过的朋友。

For example, if category1.php page is open, "category" has the deactivated class.例如,如果 category1.php 页面打开,则“category”具有停用的类。

 function updateMenu(url) { const active = document.querySelector('.menu-item.active'); if (active !== null) { active.classList.remove('active'); } const links = Array.from(document.querySelectorAll('.menu-item')); links.forEach(function(li){ let anchor = li.querySelector("a"); if(url.indexOf(anchor.href) > -1){ li.classList.add("active"); } }); } updateMenu(window.location.href);
 <div class="header_side_container"> <div class="header_builder_component"> <nav class="main-menu"> <ul id="menu-main-menu" class="menu"> <li class="menu-item"> <a href="home.php"><span>Home</span></a> </li> <li class="menu-item"> <a href="#"><span>category</span></a> <ul class="sub-menu"> <li class="menu-item"> <a href="Category1.php"> <span>Category 1</span> </a> </li> <li class="menu-item"> <a href="Category2.php"> <span>Category 2</span> </a> </li> </ul> </li> <li class="menu-item"> <a href="gallery.php"><span>gallery</span></a> </li> <li class="menu-item"> <a href="about.php"><span>about</span></a> </li> <li class="menu-item"> <a href="contact.php"><span>contact</span></a> </li> </nav> </div> </div> <!--Mobil--> <nav class="mobile_menu"> <ul id="menu-top_menu-1"> <li class="menu-item"> <a href="home.php"><span>Home</span></a> </li> <li class="menu-item"> <a href="#"><span>category</span></a> <ul class="sub-menu"> <li class="menu-item"> <a href="Category1.php"> <span>Category 1</span> </a> </li> <li class="menu-item"> <a href="Category2.php"> <span>Category 2</span> </a> </li> </ul> </li> <li class="menu-item"> <a href="gallery.php"><span>gallery</span></a> </li> <li class="menu-item"> <a href="about.php"><span>about</span></a> </li> <li class="menu-item"> <a href="contact.php"><span>contact</span></a> </li> </ul> </nav>

window.location.pathname is the property you need. window.location.pathname是您需要的属性。 Once you have it, you can find the filename (last part of the whole pathname) by using .substr and .lastIndexOf .获得后,您可以使用.substr.lastIndexOf找到文件名(整个路径名的最后一部分)。

In this code snippet, the active item is the parent of JS , I used that as an example since the location.href for these SO snippets is https://stacksnippets.net/js , hence the pathname is /js , and finally, the filename is js .在此代码片段中,活动项是JS的父项,我以它为例,因为这些 SO 片段的location.hrefhttps://stacksnippets.net/js ,因此路径名是/js ,最后,文件名是js

Check the code and you'll see what I mean检查代码,你会明白我的意思

HIH HIH

 function updateMenu(url) { const active = document.querySelector('.menu-item.active'); if (active !== null) { active.classList.remove('active'); } const links = Array.from(document.querySelectorAll('.menu-item')); links.forEach(function(li){ let anchor = li.querySelector("a"); if(anchor.href.indexOf(url) > -1) { const parentLI = $(li).parents('.menu-item').get(0) if(parentLI) parentLI.classList.add("active"); else li.classList.add("active"); } }); } const pathname = window.location.pathname, filename=pathname.substr(pathname.lastIndexOf('/') + 1); updateMenu(filename);
 li.active > a span{ font-weight: bold !important; color: red }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="header_side_container"> <div class="header_builder_component"> <nav class="main-menu"> <ul id="menu-main-menu" class="menu"> <li class="menu-item"> <a href="home.php"><span>Home</span></a> </li> <li class="menu-item"> <a href="#"><span>category</span></a> <ul class="sub-menu"> <li class="menu-item"> <a href="Category1.php"> <span>Category 1</span> </a> </li> <li class="menu-item"> <a href="js"> <span>JS</span> </a> </li> <li class="menu-item"> <a href="Category2.php"> <span>Category 2</span> </a> </li> </ul> </li> <li class="menu-item"> <a href="gallery.php"><span>gallery</span></a> </li> <li class="menu-item"> <a href="about.php"><span>about</span></a> </li> <li class="menu-item"> <a href="contact.php"><span>contact</span></a> </li> </ul> </nav> </div> </div> <!--Mobil--> <nav class="mobile_menu"> <ul id="menu-top_menu-1"> <li class="menu-item"> <a href="home.php"><span>Home</span></a> </li> <li class="menu-item"> <a href="#"><span>category</span></a> <ul class="sub-menu"> <li class="menu-item"> <a href="Category1.php"> <span>Category 1</span> </a> </li> <li class="menu-item"> <a href="js"> <span>JS too</span> </a> </li> <li class="menu-item"> <a href="Category2.php"> <span>Category 2</span> </a> </li> </ul> </li> <li class="menu-item"> <a href="gallery.php"><span>gallery</span></a> </li> <li class="menu-item"> <a href="about.php"><span>about</span></a> </li> <li class="menu-item"> <a href="contact.php"><span>contact</span></a> </li> </ul> </nav>

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

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