【发布时间】:2018-08-23 16:17:21
【问题描述】:
我想使用复选框过滤我的内容,我从“StackOverflow”获得了一些参考。以下是代码
$(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">
<h4>Profession</h4>
<label for="doctor">Doctor</label>
<input id="doctor" type="checkbox" />
<label for="engineer">Engineer</label>
<input id="engineer" type="checkbox" />
<label for="pilot">Pilot</label>
<input id="pilot" type="checkbox" />
</li>
<li class="menu-item">
<h4>City</h4>
<label for="kochi">Kochi</label>
<input id="kochi" type="checkbox" />
<label for="trivandrum">Trivandrum</label>
<input id="trivandrum" type="checkbox" />
<label for="kannur">Kannur</label>
<input id="kannur" type="checkbox" />
</li>
</ul>
<article class="post doctor kochi">doctor-kochi</article>
<article class="post engineer kannur">Engineer-kannur</article>
<article class="post pilot trivandrum">pilot-trivandrum</article>
<article class="post doctor kannur">doctor-kannur</article>
<article class="post enginner kochi">Engineer-kochi</article>
https://jsfiddle.net/kichupreeji/rcyt19g8/12/
但是我的问题是,当我从复选框中选中医生时,它会显示所有医生值,当我选择 Kannur 和医生时,它会从 Kannur 中选择医生,但是当我选择 Kochi、Kannur 和医生时,它什么也不显示。我想要的是当我选择时,我需要显示来自 Kannur 和 Kochi 的医生。我知道可以通过结合array.every 和array.some 来完成,但我不知道这些功能。任何帮助都会很重要
【问题讨论】:
-
请任何人帮助我
-
总体目标是什么?你想要一个“或”搜索(检查
#kochi和#doctor将找到所有具有这些类名either 的元素)?或者你想要一个“和”搜索(只显示那些具有 both 类名的元素)?每组可以选择多少个选项?如果用户检查#doctor、#pilot、#kochi、#kannur和#trivandrum,应该显示什么? -
选择医生时,高知特凡德鲁姆(Kochi Trivandrum)向高知和trivandrum展示了医生。 simillarly when selects doctor,pilot,kochi,kannur it displays all doctor, pilot from kochi and kannur.