【问题标题】:How to create "check/uncheck all" with checkboxes? [duplicate]如何使用复选框创建“选中/取消选中所有”? [复制]
【发布时间】:2016-11-25 05:13:11
【问题描述】:

我想要一个按钮,用于选中或取消选中所有复选框。

这是我的标记:

<div id="container">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox">
</div>
<button type="button" id="addAll">add all</button>
<button type="button" id="removeAll">remove all</button>

这是我的脚本:

$("#addAll").click(function() {
  $("#container input:checkbox").attr('checked', 'checked');
});
$("#removeAll").click(function() {
  $("#container input:checkbox").removeAttr('checked');
});

但它没有按预期工作:

  • 检查所有,有效
  • 取消选中所有,有效
  • 再次检查,没有任何反应

可能是什么错误?

this fiddle

【问题讨论】:

  • @CBroe 似乎没有其他关于 SO 的问题指向这个问题。可能是接受的答案是重复的,但这个问题不值得被标记。

标签: javascript jquery html


【解决方案1】:
$("#addAll").click(function() {
  $("#container input:checkbox").prop('checked', true);
});
$("#removeAll").click(function() {
  $("#container input:checkbox").prop('checked',false);
});

这可能是 jquery 中的一个错误,因为使用原生 setAttribute 和 removeAttribute 可以正常工作。

https://jsfiddle.net/jz5p57k9/


我为 Jquery 团队打开了一个 bug,你可以在这里关注它: https://github.com/jquery/jquery/issues/3242#issuecomment-234315378

.attr和.prop的区别请看这个问题:.prop() vs .attr()

【讨论】:

  • 问题是关于解决当前代码的问题。你应该解决问题而不是改变它。
  • 谢谢,它有效。为什么我的方法不起作用?
  • 没有解释,这是一个低质量的答案。
  • 努力寻找它@squint。
  • @risabh 我编辑了您的问题并添加了一个问题的链接,该问题解释了 attr/propr 之间的区别
猜你喜欢
  • 2019-01-14
  • 1970-01-01
  • 2013-09-09
  • 2014-11-18
  • 2017-10-07
  • 2012-06-27
  • 2011-06-15
相关资源
最近更新 更多