1

虽然我正在尝试计算数组的长度:

$('input:checkbox[name="promoOn[]"]').click( function(){
  var attributes = [];
  $('input:checkbox[name="promoOn[]"]:checked').each(function(index) { 
    attributes.push($(this).val());
    $('#promo-on-total').html(attributes.length);
  });       
});

由于某种原因,array.length 不返回 0?结果如下:

Checkbox 1, checked = array.length = 1
Checkbox 2, checked = array.length = 2
Checkbox 2, unchecked = array.length = 2
Checkbox 1, unchecked = array.length = 1 (not 0???)

有什么想法可能是错的吗?

4

2 回答 2

1

问题是您正在运行所有选中的复选框并在promo-on-total那里更新 div 中的长度值,但是一旦取消选中所有复选框,循环就不再执行(因此值不会更新)。

这会给你我所期望的:

$('input:checkbox[name="promoOn[]"]').click( function(){
  var checkedValues = [];
  $('input:checkbox[name="promoOn[]"]:checked').each(function(index) {
    checkedValues.push($(this).val());
  });

  $('#promo-on-total').html(checkedValues.length);        
});

演示

于 2012-09-20T09:01:05.953 回答
0

我认为使用此代码会更好。

$('input:checkbox[name="promoOn[]"]').click( function(){
  $('#promo-on-total').html($('input:checkbox[name="promoOn[]"]:checked').size());
});

当您取消选中一个复选框时,问题就出现了, $('input:checkbox[name="promoOn[]"]:checked') 为空,因此 html 内容 $('#promo-on-total') 没有更新。

我在这里做了一个 jsfiddle 。

于 2012-09-20T09:11:57.227 回答