javascript - 如何通过单击包含它的 div 来选中/取消选中复选框?

标签 javascript html

我有一个包含 1 个复选框的 div。每当我单击 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() 否则我在直接更改复选框时会遇到问题。在这种情况下,我使用鼠标还是键盘并不重要。

关于javascript - 如何通过单击包含它的 div 来选中/取消选中复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65718477/

相关文章:

javascript - 无法更新 "data-attribute"值

javascript - 同时链接点击和异步 AJAX 请求期间的竞争条件?

javascript - jQuery .getJSON Firefox 3 语法错误未定义

php - 无法使用 php 实例调用图像

HTML: anchor 标记中的方法属性

javascript - 正则表达式:如何从字符串中获取时间

javascript - SignalR 核心 - 尝试将 clientId 传递给 Hub,无法弄清楚如何接收

javascript - 单击提交按钮时如何放置进度光标

javascript 在新选项卡中打开所有 html 链接?

html - 如何制作一个 div 以适应滚动隐藏的所有可用宽度?