$(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>
如何最优雅的知道,如果所有受影响的div被隐藏?
UPDATE:如果你需要一个淡出后检查,你需要把支票回调:
$(".chk:not(:checked)").each(function() {
$("."+this.id).fadeOut(function() {
if (!$('.courseBox:visible').length) {
alert('all are hidden');
}
});
});
你不信任.show()和.hide()? – j08691 2012-03-08 20:27:25
@ j08691:它在的jsfiddle清晰。每个复选框隐藏某些元素。由于类重叠,所有的元素都可以在未选中所有复选框之前隐藏。 – 2012-03-08 20:34:45