2017-01-03 4 views
0

ヘッダーチェックボックスとそれに続く「子」チェックボックスがあり、私のアプリが読み込まれるたびにプログラムで表示されます。合計チェックボックスの数とチェックボックスの数を比較しますか?

ユーザーがすべての子ボックスのチェックを外すと、ヘッダーが自動的にチェックボックスがオフになるようにしようとしています。私は開始時にページ上のすべてのチェックボックスを通じてマップ:

var x = ''; 
$(document).ready(function() { 
    $('.class').map(function() { 
    x += ('Yes'); 
    }); 
    alert(x); 
}); 

これは、各セクションに存在するチェックボックスの数は、「はい」と私に配列を与えます。

ユーザーがそのクラス内のボックスのチェックを外すと、アレイを何も分割しないようにする必要があります。私は立ち往生している。ここで

は私の変更リスナーです:

$(':checkbox').change(function() { 
if(**THE CHECKBOX I AM UNCHECKING HAS THE CLASS**) { 
    x.slice(-1); 
} 
}); 

SOLUTION:

<input class='children' type='checkbox'/> 
<input class='children' type='checkbox'/> 
<input class='header' type='checkbox'/> 

var check_count = $(".children:checked").length; 

$(".children").change(function() { 
if(!this.checked) { 
if (check_count == 0) { 
$(".header").prop("checked", false); 
} 
} 
}); 
+0

すべては私のオリジナルのポストを更新未確認のチェックを外し親 – juvian

+0

ある場合、すべての兄弟は、チェックを外している場合は、チェックボックスにチェックしない場合はチェックを変更リスナーを追加します。私は変更リスナーを持っている、それはちょうど良いことではない。 – Ryan

+0

http://stackoverflow.com/a/30528299/215552 –

答えて

1

あなたは、単にチェックするチェックボックスを返すjQueryのセレクタを使用して、カウントを取得するために.lengthを使用することができます。

var check_count = $(".children:checked").length; 
if (check_count == 0) { 
    $(".header").prop("checked", false); 
} 
+0

ありがとうございます。これは簡単できれいです - 他の多くの回答も素晴らしいです – Ryan

0

は、最も効率的ではないかもしれないが、このような何かが動作する可能性があります。ユーザーがチェックボックスをクリックするたびに、他のすべてのチェックボックスが表示されます。少なくとも1つに小切手があれば、それは偽と表示され、終了します。どれもチェックされていない場合、親のチェックが外されます。

$(".childrenCheckBoxes").change(function(){ 

    $(".childrenCheckBoxes").each(function(){ 
    if (this.checked) 
     return false; 
    }); 
    $("#parentCheckBox").prop('checked', false); 
    return true; 
}); 

編集:Barmarのアプローチは非常にきれいです

関連する問題