jQuery的。 如何取消选中除一个以外的所有复选框(已选中)
我有html项目,4个例子:
Checkbox Checkbox Checkbox Checkbox Checkbox Checkbox
现在,我想要下一个:如果我点击任何复选框 – 应该选中复选框,并且应该取消选中其他复选框。 我该怎么做?
您可以使用radio
按钮并按名称属性对它们进行分组。 如果你必须使用checkboxes
那么你可以这样做,
现场演示
$('.foo').click(function(){ $('.foo').attr('checked', false); $(this).attr('checked', true); });
对于动态生成的html,您需要在其上允许您使用静态父级委托事件,您可以使用不知道静态父级的文档。
$(document).on('click','.foo', function(){ $('.foo').attr('checked', false); $(this).attr('checked', true); });
如果已知文档,则可以用静态父代替。 例如,如果div包含动态生成的具有id parentdiv
那么你可以拥有
`$('#parentdiv').on('click','.foo', function(){`
编辑
根据文档使用prop
而不是attr
来checked
, selected
或disabled
属性。
从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。 要检索和更改DOM属性(如表单元素的已选中,已选择或已禁用状态),请使用.prop()方法。
另一解决方案
$('.foo').click(function(){ $('.foo').not(this).attr('checked', false); });
这里有点我碰巧在做的事情:
.siblings("input[type='checkbox']").attr("checked", true);
将选中除了单击的复选框以外的所有复选框。
$("input[type=checkbox]").on("click", function() { if ($(this).val() == "none") { $(this).siblings("input[type=checkbox]").attr('checked', false); } else { $(this).siblings("input[value=none]").attr('checked', false); } });
jQuery V:1.6 = <
$( ".foo" ).change(function() { $('.foo').not(this).prop('checked', false); });