У меня есть список городов, в которых размещаются места по всему миру. Я хочу создать раскрывающийся фильтр, который сортирует местоположения в соответствии с их континентом. Вот PHP часть фильтраСкрыть элементы по классам с помощью Javascript
...
<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(). – stomo21