【问题标题】:On click, find next element by class name单击时,按类名查找下一个元素
【发布时间】:2018-10-22 19:54:07
【问题描述】:

我有一个移动菜单,当用户单击“open”类的 span 时,下一个 footer-menu-accordion 将打开。但是,当用户单击锚链接“level-1”Men 时,它也会打开。 我现在要做的是,当用户单击 Men I would like to use jquery 查找 NEXT footer-menu-accordion 并将其保持为 display:none (这是包含 level-2 锚标记的父 div )。我知道我必须使用 jquery 的 next() 或 find() 方法,但我不知道该怎么做。谁能帮帮我?

function mobileMainNav() {
  $('a.level-1.direct').click(function(e) {
    window.location = $(this).attr('href');
  });
}

mobileMainNav();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="mobile-menu" class=" footer-menu-accordion ">
  <div class="dropdown-container ">
     <a class="level-1 direct">Men</a>
     <span class="open">img</span>
  </div>
  <div class="footer-menu-accordion ">
    <a class="level-2 "></a>
    <ul></ul>
    <a class="level-2 "></a>
    <ul></ul>
    <a class="level-2 "></a>
    <ul></ul>
  </div>
</div>

我写了这个,所以当我点击 1 级时,我会被定向到我网站的“男士”部分。这很好用,但是当我单击 level-1 时,我不希望打开下一个下拉菜单,而它目前确实如此。所以我知道我需要在这个函数中添加更多的 jquery 来做到这一点,我只是不确定我是 jQuery 的新手。先感谢您!

【问题讨论】:

  • 你有动态用户界面吗?还是只是一个静态的?
  • 当你说“keep as display:none”时,你的意思是把它隐藏起来吗?
  • 打开下拉菜单的代码在哪里?感觉就像你想抵消当前的行为。也许最好研究一下现有的实现?
  • 你能检查你的html代码吗?跨度,div 没有正确关闭.. 如果您提供正确的 html 代码,您可能会得到解决方案
  • 您在id 之后缺少"。也没有a.level-1.direct元素

标签: javascript jquery html css


【解决方案1】:

我不确定你是否想为你的锚标记获取最近的页脚,级别为 1 ......如果是这样,试试这个:

function mobileMainNav() {
  $('a.level-1').click(function(e) {
    var nearestFooter = $(this).parent().siblings('div.footer-menu-accordion');
    console.log(nearestFooter[0]);
  });
}

mobileMainNav();
<div id="mobile-menu" class="footer-menu-accordion">
  <div class="dropdown-container">
     <a class="level-1">Men</a>
     <span class="open">img</span>
  </div>
  <div class="footer-menu-accordion">
    <a class="level-2"></a>
    <ul></ul>
    <a class="level-2"></a>
    <ul></ul>
    <a class="level-2"></a>
    <ul></ul>
  </div>
  </div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

你也没有类(.direct)的元素

【讨论】:

  • 抱歉,我编辑了代码以添加 .direct 类。我不想得到离我最近的页脚菜单手风琴。1 级锚,我想得到下一个。所以不是 .level-1 锚之前的那个,而是之后的那个(.level-2 锚的父级)
  • 我的代码正在做你需要的尝试...获取当前 div 的兄弟
  • 我已尝试将其添加到我的代码中。它不会出现在控制台中。我也有许多带有 .footer-menu-accordion 的兄弟 div。我只是想直接在 .level-1 锚之后定位那个
  • 所以你只需要取兄弟姐妹数组的第一个元素 nearestFooter[0]
猜你喜欢
  • 2011-04-09
  • 2013-11-25
  • 2016-01-19
  • 2014-02-15
  • 2013-08-05
  • 2017-09-09
  • 2021-03-05
  • 2023-01-03
相关资源
最近更新 更多