В jQuery есть селектор :visible, который выбирает элементы, если они не скрыты. Но работает он не всегда как нужно: он выбирает элементы, скрытые с помощью css свойств display или visibility.
Чтобы выбрать также элементы, которые скрыты т.к. скрыт их контейнер, можно расширить jQuery так, как это сделал Remy Sharp:
jQuery.extend(
jQuery.expr[ ":" ],
{ reallyvisible : "!(jQuery(a).is(':hidden') || jQuery(a).parents(':hidden').length)" }
);
Используется, например, так:
$('h1:reallyvisible').each(function(){
});