Esto podría ser más fácil
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
});
}
});
hizo un violín: http://jsfiddle.net/filever10/f8vk2/
desglose
puts
son las casillas de verificación
cans
son los bloques de contenido
Cuando cambia un estado de casilla de verificación, si no se verifica actualmente nada, lo muestra todo. Si se revisa algo, oculta todos los bloques de contenido y muestra cualquiera que tenga una clase que coincida con el id
de una casilla marcada. Solo muestra cosas que están ocultas, por lo que no tiene que ejecutar el programa varias veces en bloques de contenido que se aplican a múltiples casillas marcadas.