Я нашел решение своего вопроса.Возможно, вопрос вводил в заблуждение, потому что это была небольшая часть более крупного проекта.
Но я нашел быстрое и грязное решение, которое, вероятно, не имеет лучшего синтаксиса.Пожалуйста, прокомментируйте, если вы думаете, что я все равно могу это почистить, так как я все еще учусь.
Пример HTML:
<div class="boxes">
<input class="star" type="checkbox" value="4" id="s4" name="4.5" />
<label for="s4"><img src="img/4star.png"></label>
</div>
<div class="boxes">
<input class="star" type="checkbox" value="3" id="s3" name="3.5" />
<label for="s3"><img src="img/3star.png"></label>
</div>
<div class="boxes">
<input class="star" type="checkbox" value="2" id="s2" name="2.5" />
<label for="s2"><img src="img/2star.png"></label>
</div>
Я фильтровал данные JSON 4-4,5 или 3-3,5 и т. Д. Я использовал входные данные value
и name
для извлечения обоих экземпляров..
Вот код, который я использовал:
$('#star-filter').delegate('input[type=checkbox]', 'change', function() {
$('input.star').not(this).prop('checked', false);
var $list = $('.leaflet-zoom-animated > g > circle'),
$checked = $('input:checked');
if ($checked.length) {
var sel = '';
var selector = '';
$($checked).each(function(index, element){
sel += "[data-staralt~='" + element.name + "']";
selector += "[data-star~='" + element.value + "']";
});
$list.hide();
$('.leaflet-zoom-animated > g > circle').filter(sel).show();
$('.leaflet-zoom-animated > g > circle').filter(selector).show();
}
else {
$list.show();
}
});