javascript - 使用具有特定类名的 jquery 在上下文中查找父元素

标签 javascript jquery

当链接具有特定的类名时,我试图找到链接的父元素。

我有下面的列表用作导航菜单,当我加载页面时,我在 li(has-subitem) closed(display:hidden) 中有 ul(subitem)。现在我想根据我所在的页面打开其中一个。

为此,我正在尝试这样做。

每当我在“subitem li”中有类名称为“current”的链接时,我想保持“has-subitem”打开而不是关闭它。 fiddle这里

但不知何故它不起作用。我是 JS 新手:(

<ul class="navi-list">
    <li class="no-subitem"> <a class="current">Overview</a>
 <span class="navi-current"></span>

    </li>
    <li><a class="has-subitem"><i class="fa fa-caret-right fw"> </i> Policies & Procedures </a>

        <ul class="submenu">
            <!-- whenever I have this "current" i would like to find the li above with class "has-subitem" containing this link----> 
            <li><a class="current" href="#"> Documents & Resources </a>
            </li>
            <li><a href="#"> Upcoming Events </a>
            </li>
            <li><a href="#"> News </a>
            </li>
            <li><a href="#"> Announcements </a>
            </li>
        </ul>
    </li>
    <li><a class="has-subitem"><i class="fa fa-caret-right fw"> </i> Feeds & Discussions </a>

        <ul class="submenu">
            <li><a href="#"> Blog & Podcasts </a>
            </li>
            <li><a href="#"> Photos & Videos </a>
            </li>
        </ul>
    </li>
    <li><a class="has-subitem"><i class="fa fa-caret-right fw"> </i> About Us </a>

        <ul class="submenu">
            <li><a href="#"> FAQs </a>
            </li>
            <li><a href="#"> Contact Us </a>
            </li>
        </ul>
    </li>
</ul>

最佳答案

你可以忽略submenu隐藏命令中的.has-subitem.current元素

$(".has-subitem:not(.current)").next(".submenu").hide();
$('.navi-list a.current').closest('li:has(> a.has-subitem)').children('.submenu').show();

$(document).on("click", ".has-subitem", function() {
  $(this).next(".submenu").slideToggle();
  $(this).find('i').toggleClass("fa-caret-right fa-caret-down");
});
<link rel="stylesheet" type="text/css" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="navi-list">
  <li class="no-subitem">
    <a class="">Overview</a>
    <span class="navi-current"></span>
  </li>
  <li>
    <a class="has-subitem"><i class="fa fa-caret-right fw"> </i> Policies & Procedures </a>
    <ul class="submenu">
      <li><a href="#" class="current"> Documents & Resources </a></li>
      <li><a href="#"> Upcoming Events </a></li>
      <li><a href="#"> News </a></li>
      <li><a href="#"> Announcements </a></li>
    </ul>
  </li>
  <li>
    <a class="has-subitem"><i class="fa fa-caret-right fw"> </i> Feeds & Discussions </a>
    <ul class="submenu">
      <li><a href="#"> Blog & Podcasts </a></li>
      <li><a href="#"> Photos & Videos </a></li>
    </ul>
  </li>
  <li>
    <a class="has-subitem"><i class="fa fa-caret-right fw"> </i> About Us </a>
    <ul class="submenu">
      <li><a href="#"> FAQs </a></li>
      <li><a href="#"> Contact Us </a></li>
    </ul>
  </li>
</ul>

关于javascript - 使用具有特定类名的 jquery 在上下文中查找父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538544/

相关文章:

javascript - 使用ajax提交表单后清除所有表单元素

javascript - Chrome 中执行错误的 if 语句

javascript - 如何使用 jQuery 查找特定文本并设置它们的样式

javascript - 渲染部分在控制台中不显示任何错误

javascript - Magento - 分级定价 + 自定义选项?

javascript - webgl 中的 VertexIndices 是什么?

javascript - 在 Node 中运行浏览器javascript单元测试

javascript - 不正确的 DOM 问题

jquery - 多个集体诉讼

javascript - jQuery 解除绑定(bind)和绑定(bind)