首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery使用2个下拉选项过滤项目

使用jquery使用2个下拉选项过滤项目
EN

Stack Overflow用户
提问于 2021-03-19 10:57:31
回答 1查看 25关注 0票数 0

我正在寻找一种方法来过滤一个项目使用下拉选项。我有两个下拉选项,即按年份和类型过滤。我已经编写了如下代码,但它仍然不能正常工作。

我有一个模式,它可能会让你理解我所说的过滤器是如何工作的。在filter year中选择2020,在filter type中选择type-2。应该有1个数据出现。

此筛选器不要求使用所有筛选器,它只能是1个筛选器(年份或类型),并且可以同时使用2个筛选器。

有人能帮我解决这个问题吗?

代码语言:javascript
复制
$(".filter").each(function(){
$(".filter").change(function()
  {
      var rex = $(this).val();
            if (rex != "All") $(".result-filter .item").show().not('[data-year="' + rex + '"]').hide();
            else $(".result-filter .item").show(); 
  });       
});
代码语言:javascript
复制
.filter-wrapper{
  display: flex;
}

.filter-wrapper #year-filter{
  margin-right: 20px;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="filter-wrapper">
  <div class="form-group">
  <label for="">Year:</label>
  <select name="" id="year-filter" class="filter">
    <option value="All">All Year</option>
    <option value="2020">2020</option>
    <option value="2019">2019</option>
    <option value="2018">2018</option>
  </select>
</div>
<div class="form-group">
  <label for="">Type:</label>
  <select name="" id="type-filter" class="filter">
    <option value="All">All Type</option>
    <option value="type-1">Type 1</option>
    <option value="type-2">Type 2</option>
    <option value="type-3">Type 3</option>
  </select>
</div>
</div>

<ul class="result-filter">
  <li class="item" data-year="2020" data-type="type-1">
    <h6>2020</h6>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste, voluptate!</p>
    <p>Type 1</p>
  </li>
  <li class="item" data-year="2020" data-type="type-2">
    <h6>2020</h6>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
    <p>Type 2</p>
  </li>
  <li class="item" data-year="2019" data-type="type-2">
    <h6>2019</h6>
    <p>Lorem ipsum dolor sit amet.</p>
    <p>Type 2</p>
  </li>
</ul>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 11:24:48

尝试使用此解决方案

代码语言:javascript
复制
$(".filter").change(function() {
  var typeFilter = $("#type-filter").val();
  var yearFilter = $("#year-filter").val();
  
  $(".result-filter .item").show();
  
  if(typeFilter !== "All") {
    $(".result-filter .item").not('[data-type="' + typeFilter + '"]').hide();
  }
  
  if(yearFilter !== "All") {
    $(".result-filter .item").not('[data-year="' + yearFilter + '"]').hide();
  }
});

链接到jsfiddle:https://jsfiddle.net/Cuchu/e8m0fLqk/11/

致以问候!

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

https://stackoverflow.com/questions/66701929

复制
相关文章

相似问题

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