У меня есть таблица HTML, в которой я хочу скрыть/показать строки на основе нескольких флажков.Скрыть строки с несколькими флажками
Когда флажок установлен, (на основе текстового критерия) некоторые строки скрываются, если они не отмечены, отображаются все строки. Если отмечены 2 или более флажка, все строки закрываются, за исключением тех, которые соответствуют критериям из всех выбранных флажков. Но если я сниму чекбоксы, все строки будут показаны.
Мой вопрос в том, что, сняв галочку с одного из флажков, как я могу показать ТОЛЬКО строки, которые соответствовали критериям из всех выбранных выбранных флажков?
Для лучшего понимания мне нужно проверить, какие строки уже скрыты с помощью других флажков, а не показывать их, когда флажок снят.
Пример рабочего случая: CheckBox1 и checkbox2 выбраны: только row1 показано, если я снимите checkbox2, только row1 и row3 должны быть показаны
HTML:
<label><input type="checkbox" id="checkbox1">Teacher</label>
<label><input type="checkbox" id="checkbox2">Tennis</label>
<label><input type="checkbox" id="checkbox3">Married</label>
<table id="table" border="1">
<thead>
<th>First Name</th>
<th>Last Name</th>
<th>Profession</th>
<th>Hobby</th>
<th>Married</th>
</thead>
<tbody>
<tr id="row1">
<td>John</td>
<td>Doe</td>
<td>Teacher</td>
<td>Tennis</td>
<td>Yes</td>
</tr>
<tr id="row2">
<td>Eve</td>
<td>Jackson</td>
<td>Doctor</td>
<td>Darts</td>
<td>No</td>
</tr>
<tr id="row3">
<td>Adam</td>
<td>Johnson</td>
<td>Teacher</td>
<td>Skydiving</td>
<td>Yes</td>
</tr>
<tr id="row4">
<td>Nina</td>
<td>Pursuit</td>
<td>Lawyer</td>
<td>Tennis</td>
<td>Yes</td>
</tr>
</tbody>
</table>
JQuery:
$(document).ready(function() {
$('#checkbox1').change(function() {
for (var i = 0; i < 5; i++) {
if ((this.checked) && $("#table #row"+i+" td:nth-child(3):not(:contains('Teacher'))").length){
$('#row'+i).fadeOut('slow');
}
if (!this.checked) $('#row'+i).fadeIn('slow');
}
});
$('#checkbox2').change(function() {
for (var i = 0; i < 5; i++) {
if ((this.checked) && $("#table #row"+i+" td:nth-child(4):not(:contains('Tennis'))").length){
$('#row'+i).fadeOut('slow');
}
if (!this.checked) $('#row'+i).fadeIn('slow');
}
});
$('#checkbox3').change(function() {
for (var i = 0; i < 5; i++) {
if ((this.checked) && $("#table #row"+i+" td:nth-child(5):not(:contains('Yes'))").length){
$('#row'+i).fadeOut('slow');
}
if (!this.checked) $('#row'+i).fadeIn('slow');
}
});
});