数组长度不返回0

时间:2012-09-20 08:47:11

标签: javascript jquery

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

$('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???)

任何想法可能出错?

1 个答案:

答案 0 :(得分: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);        
});

DEMO