首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于过滤产品的Jquery

用于过滤产品的Jquery
EN

Stack Overflow用户
提问于 2017-07-06 15:29:42
回答 2查看 2.4K关注 0票数 1

我有一个过滤产品的jquery插件

代码语言:javascript
复制
 (function($) {

  'use strict';

  var $filters = $('.filter [data-filter]'),
    $boxes = $('.boxes [data-cat]');

  $filters.on('click', function(e) {
    e.preventDefault();
    var $this = $(this);
    
    $filters.removeClass('active');
    $this.addClass('active');

    var $filterColor = $this.attr('data-filter');

    if ($filterColor == 'all') {
      $boxes.removeClass('is-animated')
        .fadeOut().promise().done(function() {
          $boxes.addClass('is-animated').fadeIn();
        });
    } else {
      $boxes.removeClass('is-animated')
        .fadeOut().promise().done(function() {
          $boxes.filter('[data-cat = "' + $filterColor + '"]')
            .addClass('is-animated').fadeIn();
        });
    }
  });

})(jQuery);

data-cat是一个类别,但有些产品属于多个类别,过滤器对它们不起作用。如果该类别是您单击筛选按钮的唯一类别(如果产品有两个类别,例如,飞机票和渡轮机票单击飞机票筛选按钮,则它根本不会显示此产品),并且它不会显示类别中包含机票的项目,而不仅仅是只包含机票的项目

代码语言:javascript
复制
<div class="cta filter">
  <a class="blue-btn btn" data-filter="all" href="#" >All</a>
  <a class="blue-btn btn" data-filter="Airtickets" href="#" role="button">Airtickets</a>
  <a class="blue-btn btn" data-filter="Ferry" href="#" role="button">Ferry</a>
</div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-06 15:45:44

你可能需要这样的东西:

代码语言:javascript
复制
(function($) {

  'use strict';

  var $filters = $('.filter [data-filter]'),
    $boxes = $('.boxes [data-cat]');

  $filters.on('click', function(e) {
    e.preventDefault();
    var $this = $(this);
    
    $filters.removeClass('active');
    $this.addClass('active');

    var $filterColor = $this.attr('data-filter');
    
    if ($filterColor == 'all') {
      $boxes.removeClass('is-animated')
        .fadeOut().promise().done(function() {
          $boxes.addClass('is-animated').fadeIn();
        });
    } else {
      $boxes.removeClass('is-animated')
        .fadeOut().promise().done(function() {
          $boxes.filter(function(i,el){ 
              return el.dataset.cat.split(',').indexOf($filterColor)!==-1;
          })
            .addClass('is-animated').fadeIn();
        });
    }
  });

})(jQuery);
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="cta filter">
  <a class="blue-btn btn" data-filter="all" href="#" >All</a>
  <a class="blue-btn btn" data-filter="cat1" href="#" role="button">Cat1</a>
  <a class="blue-btn btn" data-filter="cat2" href="#" role="button">Cat2</a>
  <a class="blue-btn btn" data-filter="cat3" href="#" role="button">Cat3</a>


  <ul class="boxes">
    <li data-cat="cat1,cat2">cat1 & cat2</li>
    <li data-cat="cat2">cat2</li>
    <li data-cat="cat3">cat3</li>
  </ul>
</div>

票数 4
EN

Stack Overflow用户

发布于 2017-07-06 15:50:38

代码语言:javascript
复制
(function($) {

  'use strict';

  var $filters = $('.filter [data-filter]'),
    $boxes = $('.boxes [data-cat]');

  $filters.on('click', function(e) {
    e.preventDefault();
    var $this = $(this);
    
    $filters.removeClass('active');
    $this.addClass('active');

    var $filterColor = $this.attr('data-filter');

    $boxes.each(function(index){
      var curCategories = $(this).data("cat").split(",");
      if( curCategories.indexOf( $filterColor ) === -1 ){
        // match not found
        $(this).removeClass("is-animated").fadeOut();
      }else{
        //match found
        $(this).addClass("is-animated").fadeIn();
      }
    });//each()   
  });

})(jQuery);
代码语言:javascript
复制
.boxes div
{
  background: orange;
  border-radius: 50%;
  color: #777;
  float: left;
  height: 80px;
  text-align: center;
  width: 80px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="cta filter">
  <a class="blue-btn btn" data-filter="all" href="#" >All</a>
  <a class="blue-btn btn" data-filter="Airtickets" href="#" role="button">Airtickets</a>
  <a class="blue-btn btn" data-filter="Ferry" href="#" role="button">Ferry</a>  
</div>

<div class="boxes">
 <div data-cat="Airtickets,all">Airtickets, all</div>
 <div data-cat="Airtickets,all">Airtickets, all</div>
 <div data-cat="Ferry,all">Ferry, all</div>
 <div data-cat="Airtickets,Ferry,all">Airtickets, Ferry, all</div>
 <div data-cat="all">all</div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44942400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档