jquery - 如何通过单击 ul 列表中的第一个 li 元素来切换 li 元素?
问题描述
我正在尝试切换所有点击时的li
元素.hassubs-filter
。由于我在页面上多次重复这些列表,因此我不想添加任何列表id
。
我试图用 , 来做parent()
,find()
但是slideToggle()
它不会隐藏/显示。你能帮助我吗?
$('.search__filters').on('click', function() {
$(this).parent('li').find('ul').slideToggle();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main-filter">
<ul class="mainnav-filter">
<li class="headtext-filter">
<a href="#" class="search__filters">
All Items
<div class="chevron-down"></div>
</a>
</li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
</ul>
</div>
解决方案
您的 DOM 遍历以查找.hassubs-filter
与单击相关的元素a
并不完全正确。您可以使用closest()
来获取父级li
,然后是 `siblings(),如下所示:
$('.search__filters').on('click', function() {
$(this).closest('li').siblings('.hassubs-filter').slideToggle();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main-filter">
<ul class="mainnav-filter">
<li class="headtext-filter">
<a href="#" class="search__filters">
All Items
<div class="chevron-down"></div>
</a>
</li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
</ul>
</div><div class="main-filter">
<ul class="mainnav-filter">
<li class="headtext-filter">
<a href="#" class="search__filters">
All Items
<div class="chevron-down"></div>
</a>
</li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
</ul>
</div><div class="main-filter">
<ul class="mainnav-filter">
<li class="headtext-filter">
<a href="#" class="search__filters">
All Items
<div class="chevron-down"></div>
</a>
</li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
<li class="hassubs-filter">Some Text </li>
</ul>
</div>
推荐阅读
- javascript - 如何解决 NodeJS、MySQL 中无法 GET /logout 的问题
- arrays - 如何检查数组的所有项目是否包含子字符串
- opengl - 通过几何着色器将变量从顶点着色器传递到片段着色器
- sql - SQL Postgre 如果获得相同的多个数据,则显示 1 个数据以及如何实现 laravel 查询
- webrtc - 无法通过 WebRTC 发送 captureStream() 的媒体流
- android - Kotlin Int 和 Java int 表示之间的 Android 冲突
- database - 为什么 Thomas Write Rule 只忽略过时的写操作?
- javascript - webpack 是静态编译的吗?
- virtual-machine - 如何使用虚拟路由器在 vmware esxi 中创建私有 IP 地址?
- python - 是否可以使用 Flask + Docker + Nginx 更改 Amazon Elastic Beanstalk 上的后端基本 URL?