javascript - 具有多级导航的 toggleClass

标签 javascript jquery html css navigation

现在,我正在尝试像 Microsoft.com 一样操作菜单.我无法切换链接中隐藏的无序列表时遇到问题。如果您想观察,我会制作一个本地 fiddle here

这是 HTML 标记:

 <nav class="multi-menu">
  <ul>
   <li>
     <a href="#">Link</a>
  <div class="sub-menu">
   <ul>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
    <li><a href="#">Link</a></li>
   </ul>
  </div>
   </li>
   <li><a href="#">Link</a></li>
   <li><a href="#">Link</a></li>
   <li><a href="#">Link</a></li>
   <li><a href="#">Link</a></li>
  </ul>
</nav>

这是 CSS 标记:

 .multi-menu, .sub-menu {
  background: #34495e;
 }

 .multi-menu li {
  display: inline-block;
 }

 .multi-menu li a {
  display: block;
  padding: 20px 30px;
  color: white;
  text-decoration: none;
 }

 .sub-menu { 
  position: absolute;
  display: inline-block;
  width: 100%;
 }

 .sub-menu ul li {
  display: block;
  float: left;
  width: 20%;
 }

这是 JQuery 标记

 $(document).ready(function(){
  $(".multi-menu li a").each(function() {
if ($(this).next().length > 0) {
    $(this).addClass("parent");
   };
})

var menu = $(".multi-menu li a.parent");
 $(".parent").click(function (e){
  e.preventDefault();
 $(this).parent(".sub-menu ul").toggleClass('open');
  });
});

最佳答案

首先,您可以删除 div 并将 sub-menu 类直接添加到 ul 元素:

<li>
    <a href="#">Link</a>
    <ul class="sub-menu">
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
    </ul>
</li>

然后在jQuery代码中,使用siblingsnext找到与点击的父链接相关的子菜单:

$(".parent").on("click", function (e){
    e.preventDefault();
    $(this).siblings(".sub-menu").toggleClass('open');
});

对于动画可见性效果,您可以使用各种 jQuery 方法,例如:

$(this).siblings(".sub-menu").slideToggle();

关于javascript - 具有多级导航的 toggleClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914102/

相关文章:

javascript - 替换背景图片onclick

javascript - 如何使用jquery获取gridview中选定单选按钮的值

javascript - 选择器 - 在 jQuery 中选择页面上的所有表

javascript - 将 <div>...</div> 导出为包含所有资源的 html 文档(如在线网页模板生成器)

html - 如何使用 CSS 粘性

javascript - 在函数完成或出现 DIV 后运行代码

javascript - 无法在 Jetty Web 应用程序中加载 javascript 文件

javascript - 无法使用 Javascript 通过 eBay API 显示商品的价格或状况

Javascript:更改第一个子样式

javascript - Django: javascript 需要调用 python 脚本,我把它放在什么位置?