我有一个动态生成的列表,从零项开始随机长度,其中每个项目都包含一个复选框。与单选按钮不同,所有复选框都可以取消选中,但是像单选按钮一样,只能检查一个 。为了强制执行此操作,我使用的是JQuery(基于此处给出的答案:jQuery - checkboxes like radiobuttons)
我目前的代码是:
var $radiocheck = $('input.radiocheck');
$radiocheck.click(function() {
if($(this).is(':checked')) {
$(this).attr('checked', false);
}
else if($(this).not(':checked')) {
$radiocheck.removeAttr('checked');
$(this).attr('checked', true);
}
});
...但它不起作用(复选框在点击时保持未选中状态)。任何帮助表示赞赏!
答案 0 :(得分:4)
var $radiocheck = $('input.radiocheck');
$radiocheck.on('click', function() {
$radiocheck.not(this).prop('checked', false);
this.checked = this.checked===true ? true:false; // to toggle, otherwise just set to true
});
答案 1 :(得分:1)
一:
var $radiocheck = $('input.radiocheck');
$radiocheck.on('click', function() {
$radiocheck.not(this).attr('checked', false);
this.checked = this.checked;
});
<强> DEMO: One 强>
<强>两个强>
var $radiocheck = $('input.radiocheck');
$radiocheck.on('click', function() {
$radiocheck.not(this).attr('checked', false).find(this).attr('checked', this.checked);
});
答案 2 :(得分:1)
使用adeneo的方法但没有使用css类进行选择的另一个答案:
$(document).ready(function() {
var $radiocheck = $(":checkbox");
$radiocheck.on('click', function() {
$radiocheck.not(this).attr('checked', false);
this.checked = this.checked === true ? true : false;
});
});