19

我有 html 项目,4 个例子:

<div>
    <div><input type="checkbox" class="foo"> Checkbox</div>
    <div><input type="checkbox" class="foo"> Checkbox</div>
    <div><input type="checkbox" class="foo"> Checkbox</div>
    <div><input type="checkbox" class="foo"> Checkbox</div>
    <div><input type="checkbox" class="foo"> Checkbox</div>
    <div><input type="checkbox" class="foo"> Checkbox</div>
</div>

现在,我想要下一个:如果我单击任何复选框 - 应选中该复选框,而应取消选中其他复选框。我该怎么做?

4

4 回答 4

36

您可以使用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 包含动态生成的有 idparentdiv那么你可以有

`$('#parentdiv').on('click','.foo', function(){`

编辑

使用prop而不是attrfor properties checked, selected, 或disabled根据文档。

从 jQuery 1.6 开始,.attr() 方法为尚未设置的属性返回 undefined。要检索和更改 DOM 属性,例如表单元素的选中、选择或禁用状态,请使用 .prop() 方法。

于 2012-12-06T07:50:48.043 回答
12

另一种解决方案

$('.foo').click(function(){     
      $('.foo').not(this).attr('checked', false);      
});
于 2018-06-13T11:11:29.183 回答
1

也许这会帮助你:

.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);

  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>

  <input type="checkbox" id="worker-soft-eaglesoft" checked><label for="worker-soft-eaglesoft">&nbsp;Eaglesoft</label><br>
  <input type="checkbox" id="worker-soft-dentrix"><label for="worker-soft-dentrix">&nbsp;Dentrix</label><br>
  <input type="checkbox" id="worker-soft-softDent"><label for="worker-soft-softDent">&nbsp;Soft-Dent</label><br>
  <input type="checkbox" id="worker-soft-denticon"><label for="worker-soft-denticon">&nbsp;Denticon</label><br>
  <input type="checkbox" id="worker-soft-other"><label for="worker-soft-other">&nbsp;Other</label><br>

  <input type="checkbox" id="worker-soft-none" value="none">
  <label for="worker-soft-none">&nbsp;No Software Experience - Paper Records Only</label><br>
</div>

于 2017-03-14T22:34:58.483 回答
1

jQuery V:1.6 =<

$( ".foo" ).change(function() {
    $('.foo').not(this).prop('checked', false);
});
于 2018-08-07T16:44:47.100 回答