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 に答える