代码之家  ›  专栏  ›  技术社区  ›  WQ.Kevin

从多滤波器到单滤波器

  •  0
  • WQ.Kevin  · 技术社区  · 9 年前

    嗨,我是Rails的新手,目前正在从事老师给我的一个项目。
    但我只希望这段代码每次能够过滤一个类别。

    这些是我的过滤器:

    <div class="filter-buttons gen-width sidebar hidden-xs">
        <form id="filters">
          <% @categories.each do |categ| %>
            <div class="category-list">
              <input type="checkbox" name='<%= categ %>' id='<%= categ %>'>
              <label class="index-category" for='<%= categ %>'>
                <% if categ == "Social Media" %>
                  <i class="fa fa-twitter margin-right-10" aria-hidden="true"></i>
                <% elsif categ == "Content" %>
                  <i class="fa fa-pencil margin-right-10" aria-hidden="true"></i>
                <% elsif categ == "Research" %>
                  <i class="fa fa-flask margin-right-10" aria-hidden="true"></i>
                <% else %>
                  <i class="fa fa-object-group margin-right-5" aria-hidden="true"></i>
                <% end %>
              <%= categ %>
              </label>
            </div>
          <% end %>
        </form>
      </div>
      

    我的卡片是班级的div。可选卡片

    <div class="selectable-card">My Cards</div>
    

    这是我的过滤器Javascript

    $(document).ready(function() {
      $('#filters input:checkbox').change(function () {
        var selectedCategoryNames = $('#filters input:checkbox:checked').map(function () {
          return $(this).attr('name')
        }).toArray();  
    
        cards = $('.selectable-card');
        cards.hide()
        cards.each(function() {
          if (selectedCategoryNames.includes($(this).attr('data-category'))) $(this).delay(100).fadeIn(300);
        });
    
        if (selectedCategoryNames.length === 0) cards.show();
      });
    });
    2 回复  |  直到 9 年前
        1
  •  0
  •   Karthik Ravichandran    9 年前

    你可以用

    <input type="radio" name='category' data-category='<%=categ%> id='<%= categ %>' onclick="$('.selectable-card').hide(); $('.selectable-card[data-category=<%=categ%>]').show();">

    使用相同的 name

    <input type="checkbox" name='<%= categ %>' id='<%= categ %>'>

    onclick 属性,您仍然可以使用jquery脚本,只需稍作更改。

        2
  •  0
  •   WQ.Kevin    9 年前

    $('#filters input:checkbox').not(this).prop('checked', false);