同位素JS多个复选框过滤器

时间:2017-05-24 18:52:34

标签: javascript jquery html jquery-isotope

我在这两个不同的部分有这些复选框:

 <div class="col-sm-3 choose_lifestyle">

    <input type="checkbox" id="fiftyfiveplus" name="fiftyfiveplus" value=".fiftyfiveplus">
    <label for="fiftyfiveplus">55+ Exclusive</label>

    <input type="checkbox" id="allages" name="allages" value=".allages">
    <label for="allages">All-Ages</label> 

</div>
<div class="col-sm-3 builder-pick">  
    <input id="cbx_classic" type="checkbox" name="cbx_classic" value=".classic-group" />
    <label for="cbx_classic">Classic Homes</label>

    <input id="cbx_nvhomes" type="checkbox" name="cbx_nvhomes" value=".nvhomes" />
    <label for="cbx_nvhomes">NVHomes</label>

    <input id="cbx_ryan" type="checkbox" name="cbx_ryan" value=".ryan-homes" />
    <label for="cbx_ryan">Ryan Homes</label>

    <input id="cbx_winchester" type="checkbox" name="cbx_winchester" value=".winchester-homes" />
    <label for="cbx_winchester">Winchester Homes</label>
</div>

<!-- Some example results -->
<div id="wpv-view-layout-99-TCPID101">
  <div class="home_wrapper allages classic-group">

  </div>
  <div class="home_wrapper fiftyfiveplus classic-group">

  </div>
  <div class="home_wrapper fiftyfiveplus nvhomes">

  </div>
</div>

以下是同位素的代码:

var container = jQuery('#wpv-view-layout-99-TCPID101 > .row');
     var checkboxes = jQuery("input[type='checkbox']");

     container.isotope({
          itemSelector: '.home_wrapper'
     });

     var isotope = container.data('isotope');


     checkboxes.change(function() {
          var filters = [];
          // get checked checkboxes values
          checkboxes.filter(':checked').each(function() {
               filters.push(this.value);
          });

          console.log(filters);
          filters = filters.join(', ');
          container.isotope({
               filter: filters
          });

     });

如何组合过滤器?

例如,如果我从builder-pick选择框中选择了fiftyfiveplus,然后是classic-group,我应该只看到包含&#34; fiftyfiveplus classic-group&#34;的div。目前,它显示所有allages和五十五个条目。

我在这里找到了一个关于如何组合的好例子:

https://codepen.io/desandro/pen/JEojz

但无法弄清楚如何将其应用到我的版本中。

1 个答案:

答案 0 :(得分:1)

一些相关的CSS会有助于应用完整的代码段演示,但是,您可以尝试使用Natu建议的SO answer方法:

  • 替换filters = filters.join(', ');
  • filters = filters.join('');

这应该添加&amp;组合选定的选项,而不是过滤其中一个,如逗号所述。