使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
What is a better way to use less code to hide and display select menu content? javascript
UPDATE选项值不是增量的,这有关系吗?一种选择可能是苹果,另一种选择是狗
我有多个带有多个选项的下拉菜单,每次选择一个选项时,我都会显示不同的信息,但为了隐藏它以显示不同选项的信息,我必须比较当前选项的值,如果匹配,则隐藏它,然后显示新选项的信息。
例如:
下拉选择菜单
<select name="name_of_select_menu" onchange="showContent(value);">
<option value="">label option</option>
<option value="apple">apple</option>
<option value="dog">dog</option>
<option value="shoes">shoes</option>
</select>
javascript
<script type="text/javascript">
function showContent($i) {
if($i=="apple"){
document.getElementById('apple').style.display = "inline-block";
document.getElementById('dog').style.display = "none";
document.getElementById('shoes').style.display = "none";
}
if($i=="apple"){
document.getElementById('apple').style.display = "none";
document.getElementById('dog').style.display = "inline-block";
document.getElementById('shoes').style.display = "none";
}
if($i=="apple"){
document.getElementById('apple').style.display = "none";
document.getElementById('dog').style.display = "none";
document.getElementById('shoes').style.display = "inline-block";
}
}
要显示的内容
<div class="content">
<div id="apple">
<p>
I am an apple
</p>
</div>
<div id="dog">
<p>
I am a dog
</p>
</div>
<div id="shoes">
<p>
I am a pair of shoes
</p>
</div>
</div>
正如你所看到的,这可能会变成很多。。。我有20种菜单选项。。。19个东西要检查,如果打开和关闭,然后打开你想看的实际东西。
更新:
function showContent(i) {
$(".content>div").hide(); //for arbitrary keywords.
$('div#' + i).css("display", "inline-block");
}
将功能更改为:
function showContent(i) {
$("[id*=option]").hide();
$('#' + i).css("display", "inline-block");
}
阅读有关属性选择器的更多信息
使用以下代码。检查工作的DEMO
JQUERY
$(document).ready(function(){
$('.content div').hide();
$(document).on('change','select[name="name_of_select_menu"]',function(){
$('.content div').hide();
$('#'+$(this).val()).show();
});
});
HTML
<select name="name_of_select_menu">
<option value="">label option</option>
<option value="apple">apple</option>
<option value="dog">dog</option>
<option value="shoes">shoes</option>
</select>
<div class="content">
<div id="apple">
<p>
I am an apple
</p>
</div>
<div id="dog">
<p>
I am a dog
</p>
</div>
<div id="shoes">
<p>
I am a pair of shoes
</p>
</div>
</div>
使用jquery,您可以编写:
function showContent(i)
document.getElementById(i).style.display = "inline-block";
$("select[name=name_of_select_menu]").find("option").not("option[id=="+i+"]").hide();
}
jsFiddle(已更新)
你可以用几种不同的方式来简化它。将更改处理程序从HTML中移出,并直接从JS绑定到DOM元素。然后动态地捕获form元素的值,并使用它来确定要显示哪个元素。
由于要切换元素的可见性,因此需要一种同时隐藏所有元素的方法。可以使用$('.content > div').hide()
隐藏所有元素,然后使用$('#yourId').show()
显示特定元素。
HTML:
<select name="name_of_menu">
<option value="">label option</option>
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
</select>
JS(使用jQuery):
$(function () {
$('[name="name_of_menu"]').change(function () {
$('.content > div').hide();
$('#' + $(this).val()).css("display", "inline-block");
});
});
相关文章:
- 在JavaScript中拆分日期字符串的更好方法是什么
- 设置嵌套对象属性的更好方法
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 将数组从javascript格式化为php的更好方法,反之亦然
- jquery:将动画绑定到滚动条位置的更好方法
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 编写if-else语句的更好方法
- 传递promise回调方法的更好方法
- 在Knockoutjs中设置计算对象的observableArray的更好方法
- 从网页获取数据的更好方法,而不是使用DOM和HTML元素
- Backbone js代码气味-嵌入子视图的更好方法
- 从数组中删除项的更好方法
- 对多维数组进行分组的更好方法
- 在node.js和express中基于路径运行不同数据库查询的更好方法
- 动态更改测试中代码覆盖率的require语句的更好方法
- 设计具有数据持久性的web应用程序的更好方法
- 选择表行的更好方法
- 在nodejs服务器上提供文件的更好方法,而不是if/else
- Javascript;Ajax——填充对象的更好方法