JSFIDDLEПроверьте все дивы скрыты
$(document).ready(function() {
$(".chk").click(function() {
$(".chk:checked").each(function() {
$("."+this.id).show();
});
$(".chk:not(:checked)").each(function() {
$("."+this.id).hide();
});
// give a message if nothing left to show
});
});
<label>
<input class="chk" type="checkbox" checked="checked" id="course">Courses
</label>
<label>
<input class="chk" type="checkbox" checked="checked" id="morning">Morning
</label>
<label>
<input class="chk" type="checkbox" checked="checked" id="evening">Evening
</label>
<ul>
<li class="courseBox course">Course</li>
<li class="courseBox course evening">Course, Evening</li>
<li class="courseBox morning">Morning </li>
</ul>
Как наиболее элегантно знать, если были скрыты все затронутые дивы?
UPDATE: Если вам нужно проверить после FADEOUT, необходимо поставить галочку в функции обратного вызова:
$(".chk:not(:checked)").each(function() {
$("."+this.id).fadeOut(function() {
if (!$('.courseBox:visible').length) {
alert('all are hidden');
}
});
});
Вы не доверяете .show() и .hide()? – j08691
@ j08691: Это яснее в jsFiddle. Каждый флажок скрывает определенные элементы. Из-за перекрывающихся классов все элементы могут быть скрыты до того, как все флажки сняты. –