我有两个相关的下拉列表,其中第二个下拉列表中的内容取决于第一个下拉列表中的选择。例如,在以下HTML代码中,您将首先选择应用程序方法。如果您选择Aerial作为应用方法,那么您将回答更多问题,例如天线尺寸dist。否则,您需要回答地面喷雾类型。jQuery:有条件地显示基于下拉框选择的元素
所以一旦网页被加载,两个第二级下拉列表(天线大小距离和地面喷雾类型)被隐藏。只有在第一项(申请方法)中做出相关选择时才会出现。
我能够在jQuery(以下jQuery代码)中实现此功能。但我的做法很愚蠢。我的问题是:
有没有一种方法来选择整个行,而不使用计算其序列(nth-child())?基于选择元素ID,我可以选择整行吗?例如,我可以先选择$('#id_A'),然后将我的选择扩展到整行? ($(this).val()==“X”))?有没有更好的方法(循环?)来实现这个隐藏或显示功能,而不是比较所有可能的选择(($(this).val()==“X”))?
谢谢!
下面是HTML代码,并通过Django的产生形式:
<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>
感谢您的出色解决方案! – 2012-04-18 02:29:31
我可以推荐两个答案吗? – 2012-04-18 02:41:14
您只能接受一个答案。有时候有不止一个好的回应。只要接受你认为对你的问题最有帮助的地方,并给予其他有用的答案一个赞成。这将表示赞赏并向其他人表明它也有帮助。别客气。 :-) – 2012-04-18 22:04:29