javascript - 如何通过单击包含它的 div 来选中/取消选中复选框?
问题描述
我有 div,其中包含 1 个复选框。每当我单击 div 时,它都会更改 div 的类名。此外,我想在更改 div 的类名时选中和取消选中标签。
$(".tags").click(function() {
if ($(this).hasClass("active")) {
$(this).removeClass("active");
$(this).addClass("inactive");
} else if ($(this).hasClass("inactive")) {
$(this).removeClass("inactive");
$(this).addClass("active");
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<style>
.active{
color: green;
}
.inactive{
color: red;
}
</style>
<div class="tags active" name="item1"> Item1 <input type="checkbox" name="item1"></div>
<div class="tags active" name="item2"> Item2 <input type="checkbox" name="item2"></div>
<div class="tags active" name="item3"> Item3 <input type="checkbox" name="item3"></div>
如何在每个 div 中找到一个复选框并选中/取消选中将单击该 div?
解决方案
你可以做得更短:
$(".tags").click(function () {
$(this).toggleClass("active inactive")
.find("input:checkbox").prop("checked",$(this).hasClass("active"))
})
.active {background-color: yellow}
.inactive {border: 1px solid red}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="tags inactive" name="item1"> Item1 <input type="checkbox" name="item1"></div>
<div class="tags inactive" name="item2"> Item2 <input type="checkbox" name="item2"></div>
<div class="tags inactive" name="item3"> Item3 <input type="checkbox" name="item3"></div>
更新:
我从更改为.attr()
,prop()
否则直接更改复选框时遇到问题。在这种情况下,我使用鼠标还是键盘都没有关系。
推荐阅读
- azure-ad-b2c - 中国 Azure B2C - 本地帐户登录自定义策略疑难解答
- python - 如何在 sql alchemy 中有效地使用 func.isnull 来让两个字符串加入逗号分隔?
- javascript - javascript/regex 中的文件夹路径验证
- java - 无法让单选按钮更改 JLabel 的字体
- excel - 从 IE 下载文件的宏丢失或跳过
- python - 如何在另一个本身依赖于脚本的项目文件夹中运行 Python 脚本?
- angular - 如何按升序和降序排序Angular 6
- python - 从很长的字符串中获取特定的数字
- arrays - 存储过程:如何从多数组中的 JSON 对象获取数据
- javascript - datepicker 在数据库 codeigniter 上始终为 0