цикл через все доступные свойства CSS, чтобы получить количество?

0

У меня есть список результатов базы данных, каждый из которых отмечен 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 не может выполнить следующие шаги и получить желаемую функциональность.

Любая помощь будет принята с благодарностью.

  • 0
    Может быть, попробуйте это: stackoverflow.com/questions/1227286/…
  • 0
    Спасибо за предложение @Sébastien Себастьян - может быть, я просто не понимаю. Похоже, что для того, чтобы что-то сделать, нужно перебирать каждую из них по имени, закодированному вручную (считать, обновлять HTML). Я обновил свой вопрос, чтобы быть более точным.
Теги:

1 ответ

0

Не могли бы вы исправить это в бэкэнде? Например, отслеживайте доступные фильтры:

<?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(',');
  • 0
    Хорошее @ meavo, я не думал делать это таким образом. Я знаком с «как», но не «в»? Изменение его на «as» позволяет странице отображаться, но создает и недействительный аргумент, предупреждающий для foreach. Что у меня не так?
  • 0
    foreach ($ result в $ results) должен работать правильно. Что вы можете сделать для отладки, это добавить print_r ($ filters) в ваш цикл foreach. Проверьте, заполнен ли массив, как ожидалось. Может быть, тогда вы сможете узнать, что идет не так.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню