【发布时间】:2016-01-06 20:10:55
【问题描述】:
我想出了一些非常基本的 jQuery,它使用一系列 if 语句通过 html 选择列表在页面上显示/隐藏一些 Div。如果可能的话,我想以几种方式优化这段代码:
1) 如何使用更少的代码来达到相同的效果?
2) 这可能有点宽泛,但我怎样才能优化这段代码,以便不必手动输入新的 Div?换句话说,让我不必专门添加$(block-x).hide() $(block-x).show() etc...
HTML:
<div class="container">
<form class="form">
<div class="form-group">
<label for="selectList">Filter Divs</label>
<select id="selectList" class="form-control">
<option value="1" id="lAll" selected="selected">Show All</option>
<option value="2" id="lOne">One</option>
<option value="3" id="lTwo">Two</option>
<option value="4" id="lThree">Three</option>
<option value="5" id="lFour">Four</option>
</select>
</div>
</form>
<div class="filterDiv">
<div id="block-1">
<h1> Div One</h1>
</div>
<div id="block-2">
<h1> Div Two</h1>
</div>
<div id="block-3">
<h1> Div Three</h1>
</div>
<div id="block-4">
<h1>Div Four</h1>
</div>
</div>
</div>
JAVASCRIPT:
$('#selectList').change(function() {
$('#block-1').hide();
$('#block-2').hide();
$('#block-3').hide();
$('#block-4').hide();
if ($('#lAll').is(':selected')) {
$('#block-1').fadeIn();
$('#block-2').fadeIn();
$('#block-3').fadeIn();
$('#block-4').fadeIn();
}
if ($('#lOne').is(':selected')) {
$('#block-1').fadeIn();
}
if ($('#lTwo').is(':selected')) {
$('#block-2').fadeIn();
}
if ($('#lThree').is(':selected')) {
$('#block-3').fadeIn();
}
if ($('#lFour').is(':selected')) {
$('#block-4').fadeIn();
}
});
小提琴: https://jsfiddle.net/matts213/29ksshrr/5/
谢谢, 马特
【问题讨论】:
标签: javascript jquery html if-statement optimization