У меня есть форма с флажком (содержится в метке #contact
). Для действия по изменению этого флажка я показываю / скрываю div (#options
).
Чтобы убедиться, что если флажок установлен, всегда отображается #options div (и избежать ситуации, когда флажок фактически скрывает последующие параметры), я использую этот код:
$('#contact :checkbox').is(':checked') ? $("#options").show() : $("#options").hide();
Это отлично работает. У меня проблема в том, что вместо одного флажка с идентификатором я хочу иметь несколько флажков. Я хочу показать / скрыть следующий экземпляр моего .hidden
класса в зависимости от того, установлен ли предыдущий флажок (внутри метки с классом .trigger
) или нет. Я пробовал это:
$(document).ready(function() {
if( $('.trigger :checkbox').is(':checked') ) {
$(this).parent().nextAll('ul.hidden').show();
} else {
$(this).parent().nextAll('ul.hidden').hide();
}
});
Но безрезультатно. Флажки находятся в неупорядоченном списке, например:
<ul>
<li><label class="trigger"><input type="checkbox" name="02" /> Trigger 1</label>
<ul class="hidden">
<li><label><input type="checkbox" name="02-sub1" /> Normal</label></li>
<li><label><input type="checkbox" name="02-sub2" /> Normal</label></li>
</ul>
</li>
<li><label><input type="checkbox" name="02" /> Normal</label></li>
<li><label><input type="checkbox" name="03" /> Normal</label></li>
<li><label class="trigger"><input type="checkbox" name="04" /> Trigger 2</label>
<ul class="hidden">
<li><label><input type="checkbox" name="04-sub1" /> Normal</label></li>
<li><label><input type="checkbox" name="04-sub2" /> Normal</label></li>
</ul>
</li>
</ul>
Я не вижу, куда я иду не так; предположительно, мой селектор неверен, но я долго играл с синтаксисом и ничего не получил. Заранее спасибо (и спасибо, что прочитали это далеко).