0

我有一个数据库结果列表,每个都标有 css 属性以用于过滤目的。有些可能有很多标签,有些可能很少。

    <ul class="results">
      <li class="filterThis property propertysome property other propertyetc>
        <!— item info —&gt; 
      </li>
      <!— next item —&gt;
    </ul>

此行计算具有特定 css 属性(在本例中为“.property”)的可见结果数。

    var numProperty = $('.filterThis.property:visible').length

这会更新过滤器列表中的数字,这些过滤器在加载结果后加载

    $(".whenReady label span.property”).html(numProperty);

如何扩展它以遍历所有可用的 css 属性,如上计算它们,并如上更新 html?

Each() 似乎是要走的路,但我似乎无法获得结构或命名权来产生结果,或者一直携带名称,以便我可以分配 html 更新。

所有可能的属性都可以作为 php 结果使用,因此可能是 jQuery 的 json 对象(或其他东西?),但我不知道如何采取后续步骤并获得所需的功能。

任何帮助将不胜感激。

4

1 回答 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(',');
于 2013-11-12T20:10:46.887 回答