2017-01-03 1 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); 
} 
}); 

РЕШЕНИЕ:

<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

не может быть наиболее эффективным, но что-то подобное может работать. Каждый раз, когда пользователь нажимает на флажок, он смотрит на все остальные. Если хотя бы один имеет чек, он говорит «ложь» и выходит. Если ни один из них не установлен, он отключит родительский элемент.

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

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

Edit: подход Barmar является гораздо чище