我有很多文章有多个类别。我有一个每个类别的复选框。选中复选框后,应显示具有此类别的文章,否则应隐藏。
到目前为止一切顺利。
当我检查类别1而不是类别2时,应显示所有具有类别1的帖子。如果他们也有类别2,则无论如何都应该显示它们。
<input type="checkbox" value="cat1" id="checkbox1" checked />
<input type="checkbox" value="cat2" id="checkbox2" checked />
<input type="checkbox" value="cat3" id="checkbox3" checked />
<input type="checkbox" value="cat4" id="checkbox4" checked />
我使用jQuery来显示和隐藏帖子
if ($('#checkbox1').is(':checked')) {
$("article.category1").show();
} else {
$("article.category1").hide();
}
if ($('#checkbox2').is(':checked')) {
$("article.category2").show();
} else {
$("article.category2").hide();
}
if ($('#checkbox3').is(':checked')) {
$("article.category3").show();
} else {
$("article.category3").hide();
}
if ($('#checkbox4').is(':checked')) {
$("article.category4").show();
} else {
$("article.category4").hide();
}
我为此创造了一个小提琴 http://jsfiddle.net/oliverspies/t8qHT/1/
如果取消选中所有选项,但选中第一个复选框,则不会显示任何条目 - 但是应显示类cat1的所有条目 - 即使它们具有未选中的其他类别。 如果不编写数十个IF语句,我怎么能这样做?
答案 0 :(得分:4)
您可以根据输入值创建选择器。
$('#catselector').on("change", function() {
$("article").hide();
$("input[type=checkbox]:checked", this).each(function(){
$("article." + this.value).show();
});
});
$('#catselector').on("change", function() {
$("input[type=checkbox]", this).each(function(){
$("." + this.value).toggle(this.checked);
});
});
答案 1 :(得分:0)
使用jquery的toggle function:
$('#checkbox1').click(function() {
$("article.cat1").toggle();
});
$('#checkbox2').click(function() {
$("article.cat2").toggle();
});
...
答案 2 :(得分:0)
您可以在复选框点击方法中的article.cat
个对象上使用jQuery.toggle()方法。
答案 3 :(得分:0)
$('input[type="checkbox"]').on('change', function() {
$("article.category" + this.id[this.id.length - 1]).toggle(this.checked);
});
定位所有复选框(如果您愿意,可以定位一个类)并从ID中获取最后一个字符(数字)并在文章选择器中使用它,并根据要检查的复选框切换该文章。 / p>
答案 4 :(得分:0)
$('#catselector :checkbox').change(function ( e ) {
// hide all
$( 'article' ).hide();
// then filter and show selected
$( '#catselector :checked' ).each(function() {
$( 'article.' + this.value ).show();
});
});