Das könnte einfacher sein
var puts = $('.a');//get checkboxes
var cans = $('.field');//get content
puts.on('change', function() {//when checkbox changes
if (!puts.filter(':checked').length) {//if nothing's checked
cans.show();//show it all
} else {//if something's checked
cans.hide();//hide all
puts.filter(':checked').each(function() {//get checked
$('.'+this.id+':hidden').show();//show if hidden
});
}
});
machte eine Geige: http://jsfiddle.net/filever10/f8vk2/
abbauen
puts
sind die Kontrollkästchen
cans
ist die Inhaltsblöcke
Wenn sich ein Kontrollkästchen -Status ändert, wird es, wenn derzeit nichts überprüft wird, alles angezeigt. Wenn etwas überprüft wird, verbirgt es alle Inhaltsblöcke und zeigt alle, die eine Klasse haben, die dem entspricht id
eines geprüften Kontrollkästchens. Es zeigt nur Dinge, die versteckt sind, sodass es nicht mehrmals auf Inhaltsblöcken ausführen muss, die für mehrere geprüfte Kontrollkästchen gelten.