У меня есть список результатов базы данных, каждый из которых отмечен css-свойствами для целей фильтрации. У некоторых может быть много тегов, некоторые из них.
<ul class="results">
<li class="filterThis property propertysome property other propertyetc>
<!— item info —>
</li>
<!— next item —>
</ul>
Эта строка подсчитывает видимое количество результатов, которые имеют одно конкретное свойство css ('.property' в этом случае).
var numProperty = $('.filterThis.property:visible').length
И это обновляет число в списке фильтров, которые загружаются после загрузки результатов
$(".whenReady label span.property").html(numProperty);
Как это расширить, чтобы перебрать все доступные свойства css, считать их выше и обновить html, как указано выше?
Кажется, что каждый() кажется способным, но я не могу получить структуру или право именования, чтобы либо вообще давать результаты, либо переносить имена до конца, чтобы я мог назначать обновления html.
Все возможные свойства доступны как результаты php, поэтому это может быть json-объект для jQuery (или что-то еще?), Но Im не может выполнить следующие шаги и получить желаемую функциональность.
Любая помощь будет принята с благодарностью.
Не могли бы вы исправить это в бэкэнде? Например, отслеживайте доступные фильтры:
<?php
$results = .... ;
$filters = array();
foreach($result in $results){
// assuming each result has an array of filters
$filters = array_merge($filters, $result['filter']);
}
$filters = array_unique($filters);
$csFilters = implode(',',$filters);
?>
В приведенном выше примере у вас есть разделенная запятыми строка с доступными фильтрами, которые затем можно применить в качестве атрибута данных в списке результатов:
<ul class="results" data-filters="a,b,c,d">
Теперь вы можете получить доступ к фильтрам тезисов в jQuery:
$('.results').data('filters').split(',');