jQuery:选中/取消选中复选框

jQuery:选中/取消选中复选框,jquery,checkbox,each,Jquery,Checkbox,Each,我有两个div。Div A和Div B。Div A包含锚。单击其中一个锚时,它会显示我从Div B中的数组中获取的复选框列表。我有一个限制,用户只能从所有列表中选择三个复选框,通过单击锚来获取 如果禁用超过2个未选中的复选框,则我有一个限制 if (countShownCats > -1 && countShownCats < 3) { // Enable checkboxes $('.rbSubcategoryList input:checkbo

我有两个div。Div A和Div B。Div A包含锚。单击其中一个锚时,它会显示我从Div B中的数组中获取的复选框列表。我有一个限制,用户只能从所有列表中选择三个复选框,通过单击锚来获取

如果禁用超过2个未选中的复选框,则我有一个限制

if (countShownCats > -1 && countShownCats < 3) {
     // Enable checkboxes
     $('.rbSubcategoryList input:checkbox:not(:checked)').attr('disabled', false);
  } else {
     // Disable non checked checkboxes
     $('.rbSubcategoryList input:checkbox:not(:checked)').attr('disabled', true);
  }
但只有单击的第一个复选框被选中。我知道我必须以某种方式使用$。每个,但不知道如何使用

所以我的问题是,我如何使它工作,使所有选中的三个复选框保持选中,当我点击锚


谢谢大家!

好的,我想我现在拿到了

您没有在
.rbWwCatPicked
中循环浏览隐藏的输入,这就是为什么只选中了一个复选框

   $('.rbWwCatPicked input[type=hidden]').each(function(){
       $('.rbSubcategoryList input[value="' + $(this).data('pickedcat-hidden') + '"]').prop('checked', true);
   });
和最新的小提琴:


对不起,我没有正确阅读问题

试试这个:

$('.rbSubcategoryList').click(function () {
  var c = $(this).find('input:checkbox:checked').length;
  if (c >= 2) {
    $(this).find('input:checkbox:not(:checked)').prop('disabled', true);
  } else {
    $(this).find('input:checkbox:not(:checked)').prop('disabled', false);
  }
});
这是小提琴:

您的JavaScript似乎也存在一些问题。检查浏览器控制台中记录的错误


如果我理解正确,您是在请求帮助使用
每种
方法吗

试一试


由于某些原因,请共享JSFIDLE链接此函数
$('.rbsubcategory列表输入:复选框').live('change',函数(){
在JSFIDLE中不起作用。这是将块添加到C分区的部分。以下链接:使用
.on()
而不是
.live()
,如
.live()
对jquery的作用不超过1.6
。live()
在网站上对我有效,
。on()
在网站上不起作用,在jsfiddle上也不起作用:/您使用的jquery版本是什么?谢谢,这是一个很好的代码和平:)无论如何,这不是主要问题。请看一下我这里的链接。当你点击
.rbsubcategory list
中的复选框时,它会在下面附加一个橙色块。因此,当我点击3个复选框时,所有未选中的复选框都被禁用。但当我点击第一个块中的锚定时,所有复选框都会再次被取消选中。它只会ecks第一个被单击的复选框。当我在第一个块中单击锚定时,我需要脚本来检查这三个复选框:)
$('.rbSubcategoryList').click(function () {
  var c = $(this).find('input:checkbox:checked').length;
  if (c >= 2) {
    $(this).find('input:checkbox:not(:checked)').prop('disabled', true);
  } else {
    $(this).find('input:checkbox:not(:checked)').prop('disabled', false);
  }
});
$('.rbSubcategoryList input[value="' + rbCheckboxValue + '"]').each(function () {
  $(this).prop('checked', true);
});