2013-11-12 4 views
0

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

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

+0

может попробовать это: http://stackoverflow.com/questions/1227286/get-class-list-for-element-with-jquery –

+0

Спасибо за предложение @ Sébastien - может быть, я просто этого не понимаю. Кажется, что требуется выполнить итерацию каждого из них с помощью ручного кодирования, чтобы что-либо сделать (подсчитать, обновить html). Я уточнил свой вопрос, чтобы быть более точным. – Gary

ответ

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, я не думал делать так. Я знаком с «как», но не «в»? Изменение его на «как» позволяет визуализации страницы, но создает и недействительные аргументы для foreach. Что у меня не так? – Gary

+0

foreach ($ result in $ results) должен работать правильно. Что вы можете сделать для отладки - добавьте print_r ($ filters) в ваш цикл foreach. Проверьте, заполнен ли массив, как ожидалось. Может быть, тогда вы сможете узнать, что пошло не так. – meavo

+0

Проверьте, включена ли ваша отчетность об ошибках (http://php.net/manual/en/function.error-reporting.php). Если нет, вы увидите белый экран вместо логической ошибки :) – meavo

Смежные вопросы