【发布时间】:2016-03-03 19:17:16
【问题描述】:
我有一个世界各地的城市列表。我想创建一个下拉过滤器,根据他们的大陆对位置进行排序。这是过滤器的php部分
...
<div>
<label for="filt_country">Show:</label>
<select id="filt_country">
<option value="0" selected="selected">All Countries</option>
<option value="1">Restuarant Locations</option>
<optgroup label="Meetings By County ">
<option value="2">Africa</option>
<option value="3">Antartica</option>
<option value="4">Asia</option>
<option value="5">Europe</option>
<option value="6">NAmerica</option>
<option value="7">SAmerica</option>
</optgroup>
</select>
</div>
<article class="location">
<div class="body_location Europe Twenty">
<p class="location_city">
<span class="capital">Tbilisi</span>
<span class="Country">Georgia</span>
</p>
<div class="country_descr">
<h3 class="country_anthem">Tavisupleba</h3>
<p><strong>Writer: </strong>David Magradze</p>
<p><strong>Music: </strong>Zachary Paliashvili/Ioseb Kechakmadze</p>
<p></p>
</div>
</article>
...
这是根据国家/地区显示或隐藏元素的 Javascript
<script>
$(document).ready(function(){
$('#country-filter').on('change', function() {
if ( this.value == '0') {
$(".Africa").show();
$(".Antartica").show();
$(".Asia").show();
$(".Europe").show();
$(".NAmerica").show();
$(".Oceania").show();
$(".SAmerica").show();
}
else ( this.value == '2') {
$(".Africa").show();
$(".Antartica").hide();
$(".Asia").hide();
$(".Europe").hide();
$(".NAmerica").hide();
$(".Oceania").hide();
$(".SAmerica").hide();
}
else ( this.value == '3') {
$(".Africa").show();
$(".Antartica").hide();
$(".Asia").hide();
$(".Europe").hide();
$(".NAmerica").hide();
$(".Oceania").hide();
$(".SAmerica").hide();
}
.
.
.
});
});
</script>
问题是我的过滤器列表可能会增加,我不想在每次添加过滤器选项时都重新输入show 和hide 过滤器。有没有办法确保当我选择Europe 时,仅显示class 中包含欧洲的国家/地区,而隐藏其他任何内容?还是我必须每次都复制粘贴if ... else 语句?我现在知道它只有 7 项,但最多可以有 50 项。
【问题讨论】:
-
也许
not-selector 会帮助你。 -
我通常会添加一个额外的类,比如“国家”。然后将您的值 = 设置为国家/地区名称。那么你的函数应该以 $(".country").hide() 开头,然后是 $("."+this.value).show()。
标签: javascript php jquery show-hide