У меня есть страница со вложенной таблицей и флажок для проверки всей ячейки таблицы <td>
. И флажок для каждой ячейки таблицы <td>
для проверки соответствующей ячейки.Вложенная таблица checkbox check/Uncheck
То, что я пытаюсь сделать, это
- CheckAll Флажок проверки/снимите все родителя и ребенок флажок
- Снимите отметку родителя флажок неустановленными CheckALL флажок и убирает все ребенок checkbox
- Проверить родительского флажок проверяет все ребенок флажка и узнает, если все другие родительского флажок проверяется или нет, чтобы проверить CheckALL флажок
- проверки ребенка флажка следует проверить соответствующий родителя
- убрав с ребенка флажок следует проверить, если братья проверяются, если не проверено родитель checbox должны получить бесконтрольно и если checkALL checkbox проверяется, он также должен быть снят.
Я не могу этого сделать.
Вот что я пробовал.
HTML:
<table class="table table-striped tablesorter">
<thead>
<tr colspan="2">
<th>
<input type="checkbox" id="checkedAll">
</th>
<th>Check/UnCheck ALL Boxes</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" class="checkParent">
</td>
<td>1KWT</td>
</tr>
<tr>
<td colspan="2" style="padding: 0">
<table class="innertable" style="margin: 10px 0px 10px 50px;border: 1px solid #d0d0d0">
<thead>
<tr>
<th></th>
<th>Sub</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" class="checkChild" style="margin-top: -3px"> </td>
<td>1KWT1</td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkChild" style="margin-top: -3px"> </td>
<td>1KWT2</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkParent" style="margin-top: -3px"> </td>
<td>1OMN</td>
</tr>
<tr>
<td colspan="2" style="padding: 0">
<table class="innertable" style="margin: 10px 0px 10px 50px;border: 1px solid #d0d0d0">
<thead>
<tr>
<th></th>
<th>Sub</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" class="checkChild" style="margin-top: -3px"> </td>
<td>1OMN1</td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkChild" style="margin-top: -3px"> </td>
<td>1OMN2</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
сценарий:
$(document).ready(function() {
$("#checkedAll").change(function(){
if(this.checked){
$(".checkParent, .checkChild").each(function(){
this.checked=true;
});
}else{
$(".checkParent, .checkChild").each(function(){
this.checked=false;
});
}
});
$(".checkParent").click(function() {
if ($(this).is(":checked")){
var isAllChecked = 0;
$(".checkParent").each(function(){
if(!this.checked)
isAllChecked = 1;
})
$(".checkChild").prop("checked", true);
if(isAllChecked == 0){ $("#checkedAll").prop("checked", true); }
}else {
$("#checkedAll, .checkChild").prop("checked", false);
}
});
$(".checkChild").click(function() {
if ($(this).is(":checked")){
$(".checkParent").prop("checked", true);
}else {
$(".checkParent").prop("checked", false);
}
});
});
ссылка поиграться https://jsfiddle.net/4zhhpwva/
ваше решение хорошо работает при проверке одного из родителей, он проверяет ее ребенок. но снимите флажок с ребенка, который отключает родителя, не проверяя, не были ли браки или нет. он не должен отменять родительский операнд, если проверяется одно из его дочерних элементов. Снимите флажок с родителя, только если все дочерние элементы не отмечены. Я обновил скрипку. Я могу остановить родителя от его снятия, но даже если весь ребенок получает непроверенный родительский контроль, проверяется https://jsfiddle.net/4zhhpwva/4/ –