Javascript过滤复选框值的内容

Posted

技术标签:

【中文标题】Javascript过滤复选框值的内容【英文标题】:Javascript filtering content on checkbox value 【发布时间】:2016-10-04 02:15:33 【问题描述】:

我有这样的代码

<div id="filter">
</div>
<div id="items">
    <div class="item">
        <h2>Orange</h2>
        <img src="orange.png"  />
    </div>
    <div class="item">
        <h2>Banana</h2>
        <img src="banana.png"  />
    </div>
</div>

我想在其子 img src 值上过滤具有“item”类的 div。例如,如果我检查了输入女巫值banana.png,则应仅显示具有相同 img src 值的 .item。休息必须隐藏。

如果您取消选中复选框,则应再次进行控制 - 通过选中复选框隐藏的项目应再次显示。

我有创建正确复选框的相同代码,但如何休息?

$("#items > div").find("img").each(function() 
    var value = $(this).attr("src");
    $("#filter").append('<label><input type="checkbox" [value="' + value + '"]>' + value + '</label>');
    var toFilter = $("#items > div").find("img");
);

你也可以看到我的 codepen http://codepen.io/anon/pen/gMpGaE?editors=0010

【问题讨论】:

【参考方案1】:

您可以像这样使用复选框的change 事件过滤div

$("#items > div").find("img").each(function() 
  var value = $(this).attr("src");
  $("#filter").append('<label><input type="checkbox" value="' + value + '">' + value + '</label>');
  var toFilter = $("#items > div").find("img");
);
$('#filter').on('change', ':checkbox', function() 
  var checkedArray = $('#filter :checkbox:checked').map(function() 
    return this.value;
  ).get();
  if (checkedArray.length) 
    $("#items .item").hide();
    match = $("#items > div").find("img")
      .filter(function() 
        return checkedArray.indexOf($(this).attr('src')) != -1;
      ).closest('.item').show();
   else 
    $("#items .item").show();
  
)
#items > div 
  border: 1px dotted #355B78;
  margin-bottom: 10px;

label 
  display: block;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="filter">

</div>
<div id="items">
  <div class="item">
    <h2>Orange</h2>
    <img src="orange.png"  />
  </div>
  <div class="item">
    <h2>Banana</h2>
    <img src="banana.png"  />
  </div>
  <div class="item">
    <h2>Orange</h2>
    <img src="orange.png"  />
  </div>
  <div class="item">
    <h2>Banana</h2>
    <img src="banana.png"  />
  </div>
</div>

【讨论】:

很好,但是当您取消选中输入时,它会隐藏所有内容。 @KarolinaTicha 已更新。

以上是关于Javascript过滤复选框值的内容的主要内容,如果未能解决你的问题,请参考以下文章

通过javascript过滤复选框列表的最小代码

带有 React js 和状态未定义值的复选框

Javascript - 如何在 Vue.js 中使用多个复选框进行过滤?

Access 2010:根据特定组合框条件过滤字段中包含多个值的报表

列过滤器复选框未更新

基于复选框选择的AngularJS过滤器