0

我有一个动态生成的列表,从零个项目开始随机长度,其中每个项目都包含一个复选框。与单选按钮不同,可以取消选中所有复选框,但与单选按钮一样,只能选中一个。为了强制执行此操作,我正在使用 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);
    }
});

...但它不起作用(单击时复选框保持未选中状态)。任何帮助表示赞赏!

4

3 回答 3

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
});​

小提琴

于 2012-05-08T18:35:12.057 回答
1

一:

    var $radiocheck = $('input.radiocheck');

    $radiocheck.on('click', function() {
        $radiocheck.not(this).attr('checked', false);
        this.checked = this.checked;
    });

演示:一个

二:

   var $radiocheck = $('input.radiocheck');

   $radiocheck.on('click', function() {
     $radiocheck.not(this).attr('checked', false).find(this).attr('checked', this.checked);
   });

演示:两个

于 2012-05-08T18:41:34.023 回答
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;
   });
 });

小提琴

于 2016-07-28T07:38:38.363 回答