javascript Bootstrap 4中使用按钮的过滤卡

ldioqlga  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(108)

我有一个目标网页40卡。每张卡被分配到一个类别/组(共5个类别)。我想创建5个按钮,以便一旦点击按钮,从特定类别或类别卡是可见的。我不想使用搜索栏。只有这5个按钮来过滤卡组。
我正在使用Bootstrap 4和Flask。我发现了一些解决方案。其中一个是here,但它使用搜索栏而不是按钮。你能告诉我如何做到这一点吗?

eimct9ow

eimct9ow1#

您可以使用JavaScript方法querySelectorAll()获取所有卡片,然后使用if语句按类别切换卡片的可见性。

尝试以下片段

$('button').on('click', function(){
  const cards = document.querySelectorAll('.card');
  for(card of cards){
    
    const cardCategory = card.getAttribute('category');
    const categoryOne = this.getAttribute('category-one');
    const categoryTwo = this.getAttribute('category-two');
    
    if(cardCategory ===  categoryOne || cardCategory ===  categoryTwo || categoryOne === 'all'){
      card.style.display = 'block';
    } else{
      card.style.display = 'none';
    }
  }
});
section{display:flex}
.card{
width:70px;
height:100px;
border:1px solid black;
margin:4px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section>
  <div class="card" category="cars" style="background-color:yellow"></div>
  <div class="card" category="cars" style="background-color:yellow"></div>
  <div class="card" category="apples" style="background-color:red"></div>
  <div class="card" category="trucks" style="background-color:green"></div>
  <div class="card" category="trucks" style="background-color:green"></div>
  <div class="card" category="trucks" style="background-color:green"></div>
</section>
<br>
<button category-one="cars">Cars</button>
<button category-one="apples">Apples</button>
<button category-one="trucks">Trucks</button>
<button category-one="trucks" category-two="apples">Trucks and Apples</button>
<button category-one="all">Show All</button>

也可以通过使用filter()方法来实现这一点:
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个

相关问题