Этот фрагмент зациклит все <div id="wrap#">
и скроет их, если тест скрыт.
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
Если вы по-прежнему хотите, чтобы ваш <div id="wrap#">
оставался видимым, если тестов вообще нет (как, например, в разметке), вы можете использовать следующий модифицированный фрагмент:
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']").length > 0 &&
wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
Нет веских причин для числовых классов (кроме крайних случаев). Ваша нумерация усложняет приведенный выше код, а также ваш CSS. Было бы проще просто убрать нумерацию с test
. (Вам это не нужно, так как вы всегда можете выбрать их подмножество, используя :lt(index)
, :gt(index)
, :eq(index)
, :first
и :last
.
Что касается нумерации идентификаторов, это нормально, поскольку каждый идентификатор должен быть уникальным.