javascript - 如何选择具有相同类但仅在同一字段集中的复选框?

标签 javascript jquery checkbox

所以我一直在努力解决这个问题,我将创建几个复选框组,我希望使用相同的通用类来提高效率,但我决定使用一种“评级系统”,通过选择一个其中一个字段集中的 5 个复选框将选中或取消选中其他复选框。

例如:通过选中复选框 3,1、2 和 3 将选中,但 4 和 5 将取消选中。

但是,由于我在页面上有很多字段集,它们会相互干扰。这是我在 HTML 中的内容:

<p>Example 1</p>
<fieldset id="field1">
    <input type="checkbox" name="forca" class="checkOne" />
    <input type="checkbox" name="forca" class="checkTwo" />
    <input type="checkbox" name="forca" class="checkThree" />
    <input type="checkbox" name="forca" class="checkFour" />
    <input type="checkbox" name="forca" class="checkFive" />
</fieldset>

<p>Example 2</p>
<fieldset id="field2">
    <input type="checkbox" name="destreza" class="checkOne" />
    <input type="checkbox" name="destreza" class="checkTwo" />
    <input type="checkbox" name="destreza" class="checkThree" />
    <input type="checkbox" name="destreza" class="checkFour" />
    <input type="checkbox" name="destreza" class="checkFive" />
</fieldset>

使用以下 Jquery 代码:

<script type="text/javascript">
jQuery(".checkOne").click(function() {
    jQuery('.checkOne').prop('checked', true);
    jQuery('.checkTwo').prop('checked', false);
    jQuery('.checkThree').prop('checked', false);
    jQuery('.checkFour').prop('checked', false);
    jQuery('.checkFive').prop('checked', false);
});
jQuery(".checkTwo").click(function() {
    jQuery('.checkOne').prop('checked', true);
    jQuery('.checkTwo').prop('checked', true);
    jQuery('.checkThree').prop('checked', false);
    jQuery('.checkFour').prop('checked', false);
    jQuery('.checkFive').prop('checked', false);
});
jQuery(".checkThree").click(function() {
    jQuery('.checkOne').prop('checked', true);
    jQuery('.checkTwo').prop('checked', true);
    jQuery('.checkThree').prop('checked', true);
    jQuery('.checkFour').prop('checked', false);
    jQuery('.checkFive').prop('checked', false);
});
jQuery(".checkFour").click(function() {
    jQuery('.checkOne').prop('checked', true);
    jQuery('.checkTwo').prop('checked', true);
    jQuery('.checkThree').prop('checked', true);
    jQuery('.checkFour').prop('checked', true);
    jQuery('.checkFive').prop('checked', false);
});
jQuery(".checkFive").click(function() {
    jQuery('.checkOne').prop('checked', true);
    jQuery('.checkTwo').prop('checked', true);
    jQuery('.checkThree').prop('checked', true);
    jQuery('.checkFour').prop('checked', true);
    jQuery('.checkFive').prop('checked', true);
});
</script>

正如我所说。我的问题是它可以工作,但是 Example1 会干扰 Example2。但是,有没有办法做到这一点,使 jQuery 仅在相同的字段集中工作?

最佳答案

这是一种方法:

$('#field1 input, #field2 input').click(function() {
  $(this).prop('checked', true).siblings().prop('checked', false).end().addBack().prevAll().prop('checked', true)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Example 1</p>
<fieldset id="field1">
  <input type="checkbox" name="forca" class="checkOne" />
  <input type="checkbox" name="forca" class="checkTwo" />
  <input type="checkbox" name="forca" class="checkThree" />
  <input type="checkbox" name="forca" class="checkFour" />
  <input type="checkbox" name="forca" class="checkFive" />
</fieldset>

<p>Example 2</p>
<fieldset id="field2">
  <input type="checkbox" name="destreza" class="checkOne" />
  <input type="checkbox" name="destreza" class="checkTwo" />
  <input type="checkbox" name="destreza" class="checkThree" />
  <input type="checkbox" name="destreza" class="checkFour" />
  <input type="checkbox" name="destreza" class="checkFive" />
</fieldset>

它的工作方式是在单击一个输入后,保持输入被选中,取消选中所有的兄弟,然后检查选中的兄弟之前的所有兄弟。同时不影响其他群体。

关于javascript - 如何选择具有相同类但仅在同一字段集中的复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230131/

相关文章:

javascript - ES2015 导入 jQuery 在测试用例中不起作用

javascript - 使用纯 JavaScript 添加 div 包装器

javascript - 将复选框和 id 添加到表中?本地存储

javascript - 将内容 append 到 Div,然后尝试向下滑动

javascript - 从 UL 中删除选定的 LI

javascript - 关联 Jquery 中同一元素问题的脚本

php - Ajax 将发布数据提交到 get url

java - Android: ListView 中的复选框(如何在适配器中创建OnCheckedChangeListener)

javascript - 选中复选框时如何显示/隐藏下拉菜单

JavaScript:删除对象数组中最后一个的重复项