【问题标题】:Jquery Add active class to parent classJquery将活动类添加到父类
【发布时间】:2016-05-06 16:12:24
【问题描述】:

我想制作一个导航菜单,当我单击时将添加活动类。此外,当单击子级时,其父级将添加活动类并删除当前活动类(只有一个活动类)。例如,当链接 3 被点击时,链接 2 和链接 1 将不会被激活。单击链接 2.1 时,只有链接 2 将处于活动状态。

<ul class="additional-menu">
<li class="active"><a href="#">Link1</a></li>
<li><a href="#" id="link2">Link2</a></li>
<ul>
<li><a href="#" id="link2.1">Link2.1</a></li>
</ul>
<li><a href="#" id="link3">Link3</a></li>
</ul> 

jquery:

$('.additional-menu').on('click','li', function(){
$(this).addClass('active').siblings().removeClass('active');

});

【问题讨论】:

  • 您的 HTML 无效,请检查并更正。
  • 根据 W3 文档,嵌套的 &lt;ul&gt; 应该是 &lt;li&gt; - w3.org/wiki/HTML_lists 的子级

标签: jquery


【解决方案1】:

我相信这就是你要找的。​​p>

基本上,当单击锚点时,它会从根菜单项中删除所有 active 类。然后它将类active 添加到所有父类li

FIDDLE

HTML(从您的演示中更正)

<ul class="additional-menu">
  <li class="active"><a href="#">Link1</a></li>
  <li><a href="#" id="link2">Link2</a>
    <ul>
      <li><a href="#" id="link2.1">Link2.1</a></li>
    </ul>
  </li>
  <li><a href="#" id="link3">Link3</a></li>
</ul>

JS

$('.additional-menu a').on('click', function() {
  var t = $(this); //optional but faster if we use it more than once
  t.parents('.additional-menu').find('li').removeClass('active'); //remove all the active classes
  t.parentsUntil('.additional-menu', 'li').addClass('active'); //set the active class to all the li parents of the anchor element
})

【讨论】:

  • 谢谢!!这就是我想要的。
  • 当我输入 url 而不是 # 时,活动类不起作用。如何解决?我将代码用作 php:include'menu.php';
  • 这取决于您的页面是如何设置的。当你点击一个 URL 时,你会加载另一个页面吗?还是ajax?
  • 当我点击 URL 时。它加载另一个 html/php 文件。
  • 好的。在您的 menu.php 中,您可以设置一个初始的“活动”类吗?如果是这样,你可以使用这个小提琴:jsfiddle.net/9f14qkxu/4
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 2011-03-29
  • 2014-02-23
  • 2019-07-12
  • 1970-01-01
  • 2016-05-03
相关资源
最近更新 更多