javascript - 使用 jQuery 查找下一个 div 并显示/隐藏它

标签 javascript html jquery

我正在开发一个列出产品/子产品的应用程序。当我单击 V 形时,我试图显示子产品。由于某种原因,我无法让它发挥作用。我已经能够让 V 形的翻转工作起来。

这是我的代码:

<div class="item">
    Product 1
    <div style="float: right;"><i class="fas fa-fw fa-chevron-down" onclick="expand(this,event)"></i></div>

    <div class="sub-item-list" style="display: none">            
        <div class="sub-item">
            Sub Product 1
        </div> 
    </div>
</div>

function expand(event) {
    if ($(event).hasClass("fa-chevron-down")){
        setTimeout(function () {///workaround
            $(event).removeClass("fa-chevron-down");                
        }, 10);
                      
        $(event).addClass("fa-chevron-up"); 
        $(event).closest('div').next().find("sub-item-list").css('display', 'inherit');

    } else {
        setTimeout(function () {///workaround
            $(event).removeClass("fa-chevron-up");                
        }, 10);

        $(event).addClass("fa-chevron-down");
        $(event).closest('div').next().find("sub-item-list").css('display', 'none');
    }
};

有人可以告诉我问题是什么吗?

最佳答案

您可以使用 .closest('div.item') 获取最接近的 div,然后使用 .find(".sub-item-list") 来获取找到你需要显示的div。

演示代码:

function expand(event) {
  if ($(event).hasClass("fa-chevron-down")) {
    setTimeout(function() { ///workaround
      $(event).removeClass("fa-chevron-down");
    }, 10);

    $(event).addClass("fa-chevron-up");
    //get closest div with class item -> find class
    $(event).closest('div.item').find(".sub-item-list").css('display', 'inherit');

  } else {
    setTimeout(function() { ///workaround
      $(event).removeClass("fa-chevron-up");
    }, 10);

    $(event).addClass("fa-chevron-down");
     //get closest div with class item -> find class
    $(event).closest('div.item').find(".sub-item-list").css('display', 'none');
  }
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item">
  Product 1
  <div style="float: right;"><i class="fas fa-fw fa-chevron-down" onclick="expand(this,event)"> >> </i></div>

  <div class="sub-item-list" style="display: none">
    <div class="sub-item">
      Sub Product 1
    </div>
  </div>
</div>

关于javascript - 使用 jQuery 查找下一个 div 并显示/隐藏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63627271/

相关文章:

javascript - 通用 Javascript 图像交换

javascript - JQuery 自动完成不适用于第一个按键事件(源是一个数组)

带有 JSON 字符串化对象的 javascript indexOf

javascript - 如何获取 textarea 值,并维护 HTML 样式

javascript - HTML5 放置事件子级被阻止

javascript - 通过jquery动态隐藏id

javascript - 在 window.location 上调用 window.onbeforeunload 来下载文件

javascript - 如何使用jquery/javascript通配符查找图像

javascript - 使用什么类型的方法在页面加载时将脚本注入(inject)页面?

javascript - 通过另一个类名 jQuery 获取类名