javascript - 仅在选定的 div 上切换隐藏类
问题描述
我有一个带有 API 生成的 LI(用户)的 UL。在每个用户内部,都有一个隐藏的容器,其中包含用于添加要搜索的标签的输入。当您单击“+”伪按钮时,这些隐藏的容器应该只显示在选定的用户身上。
我让它切换隐藏类,但它会切换每个生成的类,而不是我点击的特定用户。
jQuery代码:
$(".fa-plus").on("click", (() =>{
$("#tag-container, #add-tag-input, #hideGrades",() => {
$(this).toggleClass("hidden");
});
}));
HTML 代码:
<div id="hideGrades">
<p class="card-text hidden">Grades: <%= grades %></p>
</div>
<div class="tag-container hidden" id="tag-container">
</div>
<div>
<input class ="hidden" type="text" value="" placeholder="Add a tag" id="add-tag-input" />
</div>
完整的分区:
<div class="col-md-8">
<div class="card-body">
<h2 class="card-title"><%=student["firstName"] + " " + student["lastName"] %> <i class="fas fa-plus"></i></h2>
<div>
<p class="card-text">Email: <%= student["email"] %></p>
<p class="card-text">Company: <%= student["company"] %></p>
<p class="card-text">Skill: <%= student["skill"] %></p>
</p>
<div id="hideGrades">
<p class="card-text hidden">Grades: <%= student["grades"] %></p>
</div>
<div class="tag-container hidden" id="tag-container">
</div>
<div>
<input class ="hidden" type="text" value="" placeholder="Add a tag" id="add-tag-input" />
</div>
</div>
</div>
</div>
谢谢!
解决方案
你可以修改你的 HTML 让它变得更容易,并且简单地使用 jQuery 函数,比如parent()
和siblings()
来显示你点击的项目,而不是你的 DOM 中的所有类。
此外,您不需要使用箭头函数,
this
其中的 =>jQuery
会使事情变得复杂。
你可以简单地使用function
来做同样的事情。
运行下面的代码片段以查看工作情况(单击+号,以便为每个学生显示隐藏字段)
$(".fa-plus").on("click", function(){
$(this).parent().siblings('.grades_section').toggleClass("hidden");
});
.hidden {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="col-md-8">
<div class="card-body">
<h2 class="card-title">Student 1 <i class="fa fa-plus"></i></h2>
<div>
<p class="card-text">Email: Email
</p>
<p class="card-text">Company: Company
</p>
<p class="card-text">Skill: Skill
</p>
</p>
</div>
<div class="grades_section hidden">
<div id="hideGrades">
<p class="card-text ">Grades: grades</p>
</div>
<div class="tag-container" id="tag-container">
Some Data
</div>
<div>
<input class="add-tag-input" type="text" value="" placeholder="Add a tag" />
</div>
</div>
</div>
</div>
<div class="col-md-8">
<div class="card-body">
<h2 class="card-title">Student 2 <i class="fa fa-plus"></i></h2>
<div>
<p class="card-text">Email: Email
</p>
<p class="card-text">Company: Company
</p>
<p class="card-text">Skill: Skill
</p>
</p>
</div>
<div class="grades_section hidden">
<div id="hideGrades">
<p class="card-text ">Grades: grades</p>
</div>
<div class="tag-container" id="tag-container">
Some Data
</div>
<div>
<input class="add-tag-input" type="text" value="" placeholder="Add a tag" />
</div>
</div>
</div>
</div>
推荐阅读
- javascript - 仅适用于 alpha 和单个空格的函数
- python - 我不知道我的 ThreadPoolExecutor 会发生什么
- java - Grade-wrapper.properties 和实际版本之间的 Gradle 版本不一致
- c++ - 访问结构指针的 next* 字段中的 int
- c# - 如何找到并写下两个数字之间的质数?
- javascript - 三星 android 设备中的 WebView 问题
- python - 如何为 discord.py 机器人打开/关闭开关
- python - Google Cloud Speech-to-Text API 的问题
- powershell - Powershell脚本删除小于6000字节的*.jpg文件,并删除对应命名的*labelled.png文件?
- java - 在 Java 6 中删除方括号之间的一些文本