У меня есть два связанных раскрывающихся списка, в которых содержимое во втором раскрывающемся списке зависит от выбора, сделанного в первом. Например, в следующем HTML-коде сначала выберете метод приложения. Если вы выберете Aerial в качестве метода приложения, вы ответите на следующий вопрос, например, размер антенны. В противном случае вам необходимо ответить на тип спреда на землю.jQuery: Условное отображение элемента, основанного на выборе выпадающего списка
Таким образом, как только веб-страница загружена, выпадающие списки второго уровня (размер антенны и тип спрей для заземления) скрыты. Они появятся только в том случае, если соответствующий выбор сделан в первом (метод приложения).
Я могу достичь этой функции в jQuery (ниже кода jQuery). Но мой подход довольно глуп. Мой вопрос:
Есть ли способ выбрать целую строку, не используя подсчет ее последовательности (nth-child())? Можно ли выбрать всю строку, основанную на выборе идентификатора элемента? Например, можно ли сначала выбрать $ ('# id_A'), а затем расширить мой выбор до целой строки?
Есть ли лучший способ (цикл?) Для достижения этой функции скрытия или шоу, а не для сравнения всех возможных вариантов (($ (this) .val() == "X"))?
Спасибо!
Вот HTML-код, а форма генерируется Джанго:
<div class="articles">
<form method="GET" action=_output.html>
<table align="center">
<tr><th><label for="id_application_method">Application method:</label></th><td><select name="application_method" id="id_application_method">
<option value="">Pick first</option>
<option value="A">Aerial</option>
<option value="B">Ground</option>
</select></td></tr>
<tr><th><label for="id_A">Aerial Size Dist:</label></th><td><select name="aerial_size_dist" id="id_A">
<option value="A1" selected="selected">A1</option>
<option value="A2">A2</option>
</select></td></tr>
<tr><th><label for="id_B">Ground spray type:</label></th><td><select name="ground_spray_type" id="id_B">
<option value="B1" selected="selected">B1</option>
<option value="B2">B2</option>
</select></td></tr>
</table>
</form>
</div>
Вот код JQuery:
<script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<script>$(function() {
$("tr:nth-child(2)").hide();
$("tr:nth-child(3)").hide();
$('#id_application_method').change(function() {
($(this).val() == "A") ?
$("tr:nth-child(2)").show() : $("tr:nth-child(2)").hide();
($(this).val() == "B") ?
$("tr:nth-child(3)").show() : $("tr:nth-child(3)").hide();
});});</script>
Спасибо за отличное решение! –
Могу ли я порекомендовать два ответа? –
Вы можете принять только один ответ. Иногда бывает более одного хорошего ответа. Просто примите то, что вы найдете наиболее полезным для вашей проблемы, и дайте другим полезным ответам вверх. Это продемонстрирует признательность и указывает другим, что это тоже полезно. Пожалуйста. :-) –