【问题标题】:Multiple checkbox filter with jquery使用 jquery 的多个复选框过滤器
【发布时间】:2018-08-18 17:41:19
【问题描述】:

我正在使用 jquery 输入复选框过滤器。在搜索参考资料时,我从“StackOverflow”中获得了以下代码,该代码运行良好。但我的问题是如何将此代码与逻辑和操作一起使用。即,如果我选中了两个复选框,它只显示具有两个值的内容,而不是任何一个或

$(document).ready(function () {
$('.post').show();

$('.menu-item').find('input:checkbox').on('click', function () {
    var post = $('.post').hide();

    var elements = $('.menu-item').find('input:checked');

    if(elements.length){
        elements.each(function () {
            post.filter('.' + this.id).show();
        });
    }
    else
        post.show();
  });
}); 

http://jsfiddle.net/mzvNL/1/

【问题讨论】:

  • 你能解释一下你到底想要什么吗?
  • "如果我选中了两个复选框,它只会显示两个值的内容,而不是任何一个或" -> 你确定吗?对我来说,它确实选择了具有任何复选框值的框(刚刚尝试了您的示例)。
  • 对不起我的英语。我的意思是它应该只显示具有两个值的内容,而不是要么要么。但现在它显示复选框的任何值。我的意思是说我需要它来执行“逻辑与”操作。

标签: jquery checkbox filter


【解决方案1】:

您可以使用Array.every:

演示

$(document).ready(function() {
  $('.post').show();

  $('.menu-item').find('input:checkbox').on('click', function() {
    var $posts = $('.post').hide();
    var $elements = $('.menu-item').find('input:checked');

    $posts
      .filter(function() {
        var $post = $(this);
        return $elements.toArray().every(function(element) {
          return $post.hasClass($(element).attr('id'));
        });
      })
      .show();
  });
});
article {
  height: 100px;
  width: 100px;
  background: red;
  margin: 10px;
  display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="menu-item">
    <input id="beans-palak" type="checkbox" />
    <label for="beans-palak">Beans Palak</label>
    
    <input id="bengal-lentils" type="checkbox" />
    <label for="bengal-lentils">Bengal Lentils</label>
    
    <input id="bombay-potatoes" type="checkbox" />
    <label for="bombay-potatoes">Bombay-Potatoes</label>
  </li>
</ul>

<article class="post beans-palak">palak</article>
<article class="post bombay-potatoes">potatoes</article>
<article class="post bengal-lentils">lentils</article>
<article class="post bombay-potatoes bengal-lentils">potatoes lentils</article>
<article class="post bengal-lentils bombay-potatoes bengal-lentils">all</article>

【讨论】:

  • 这绝对是我需要的。非常感谢
  • 我可以再问一个疑问,即。如果我有多个 'li's 并且每个 li 都有不同的复选框。当我从单个 li 检查两个值时,是否可以在复选框中显示任何值
  • @krishna 当然可以,你可以利用Array.someArray.every结合起来。
  • 能否用代码解释一下。因为我不知道这些功能
猜你喜欢
  • 2014-05-12
  • 2017-12-07
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2011-10-25
相关资源
最近更新 更多