javascript – jQuery:条件显示基于下拉框选择的元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jQuery:条件显示基于下拉框选择的元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3149字,纯文字阅读大概需要5分钟。
内容图文
![javascript – jQuery:条件显示基于下拉框选择的元素](/upload/InfoBanner/zyjiaocheng/707/f30f0901f37f4cf8ba0c16ec2394b20f.jpg)
我有两个相关的下拉列表,其中第二个下拉列表中的内容取决于第一个下拉列表中的选择.例如,在以下HTML代码中,您将首先选择应用程序方法.如果您选择Aerial作为应用方法,那么您将回答进一步的问题,例如天线尺寸dist.否则,您需要回答地面喷雾类型.
因此,一旦加载了网页,就会隐藏两个第二级下拉列表(空中大小,地面喷射类型).只有在第一个(应用方法)中进行相关选择时,它们才会出现.
我能够在jQuery(jQuery代码下面)中实现这个功能.但我的做法非常愚蠢.我的问题是:
>有没有办法选择整行,而不使用其序列计数(nth-child())?我可以根据选择元素ID来选择整行吗?例如,我可以先选择$(‘#id_A’)然后将我的选择扩展到整行吗?
>有没有更好的方法(一个循环?)来实现这个隐藏或显示功能而不是比较所有可能的选择(($(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>
解决方法:
我认为iKnowKungFoo的答案非常直截了当(我得到了投票).我注意到你说你的表单是由Django生成的.如果您不能直接修改生成的HTML标记,这是您的问题的另一种解决方案.
$(document).ready(function() {
var $aerialTr = $('#id_A').closest('tr').hide();
var $groundSprayTr = $('#id_B').closest('tr').hide();
$('#id_application_method').change(function() {
var selectedValue = $(this).val();
if(selectedValue === 'A') {
$aerialTr.show();
$groundSprayTr.hide();
} else if (selectedValue === 'B') {
$aerialTr.hide();
$groundSprayTr.show();
} else {
$aerialTr.hide();
$groundSprayTr.hide();
}
});
});
这是一个jsFiddle测试:http://jsfiddle.net/willslab/n54cE/2/
它应该与您现有的标记一起使用.它根据选择框的当前ID选择tr.如果更改这些ID,则需要相应地修改选择器.
我希望有所帮助!
编辑:这是另一种选择,“混合”方法的灵感来自iKnowKungFoo.他的解决方案很优雅,所以我将它与我自己的解决方案相结合.无需更改HTML或CSS即可使用.
$(document).ready(function() {
$('#id_A').closest('tr').addClass('method_options').hide();
$('#id_B').closest('tr').addClass('method_options').hide();
$('#id_application_method').change(function() {
$('tr.method_options').hide();
$('#id_' + $(this).val()).closest('tr').show();
});
});
jsFiddle链接:http://jsfiddle.net/willslab/6ASJu/3/
内容总结
以上是互联网集市为您收集整理的javascript – jQuery:条件显示基于下拉框选择的元素全部内容,希望文章能够帮你解决javascript – jQuery:条件显示基于下拉框选择的元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。