【问题标题】:How do I realign filtered cards after search?搜索后如何重新排列过滤后的卡片?
【发布时间】:2019-08-13 15:39:31
【问题描述】:

搜索“第二张卡片”后,我希望结果重新排列以从结果部分的开头显示。

我也找不到任何关于如何对卡片进行分页的文档...我只是想澄清一下卡片的分页。我可以找到有关如何对表格进行分页的文档。卡片上的那些没有使用卡片类。

我尝试使用 card-deck 类而不是 card-block 类。这是代码笔:https://codepen.io/dnorton94/pen/NWKGagz

<!-- search bar -->
<div class="container">
  <div class="row">
    <div class="col-sm-12 mb-3">
      <input type="text" id="myFilter" class="form-control" onkeyup="myFunction()" placeholder="Search by MBTI personality type..">
    </div>
  </div>
<!-- results -->
<div class="container">
  <div class="row" id="myItems">
    <!-- card one -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card one</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div>
    <!-- card two -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card two</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div>
    <!-- card three -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card three</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div>
    <!-- card four -->
    <div class="col-sm-3">
      <div class="card">
        <div class="card-block">
          <img class="card-img-top img-fluid" src="//placehold.it/500x200" alt="Card image cap">
            <h5 class="card-title">Card four</h5>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
         </div>
      </div>
    </div> 
    var input, filter, cards, cardContainer, h5, title, i;
    input = document.getElementById("myFilter");
    filter = input.value.toUpperCase();
    cardContainer = document.getElementById("myItems");
    cards = cardContainer.getElementsByClassName("card");
    for (i = 0; i < cards.length; i++) {
        title = cards[i].querySelector(".card-block h5.card-title");
        if (title.innerText.toUpperCase().indexOf(filter) > -1) {
            cards[i].style.display = "";
        } else {
            cards[i].style.display = "none";
        }
    }
}
.row {
   display: flex;
   flex-wrap: wrap;
}

我希望在我输入“第二张卡片”后重新格式化结果,第二张卡片替换卡片的初始位置。

分页...我想在一页显示 12 张卡片,然后在下一页显示 12 张卡片,依此类推

【问题讨论】:

    标签: javascript twitter-bootstrap


    【解决方案1】:

    你必须像下面这样选择父元素

    if (title.innerText.toUpperCase().indexOf(filter) > -1) {
        cards[i].parentElement.style.display = "flex"
    } else {
        cards[i].parentElement.style.display = "none"
    }
    

    【讨论】:

    • 这是完美的 mkHun。我会继续搜索卡片的分页文档,但感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 2019-08-09
    • 2020-05-04
    • 2013-05-09
    • 1970-01-01
    • 2021-12-04
    • 2021-11-19
    • 2016-10-26
    相关资源
    最近更新 更多