【发布时间】:2015-11-01 11:32:52
【问题描述】:
我已经设置了一个过滤器列表,其中包含复选框。选中特定复选框时,我需要与类进行交互,以便通过JavaScript隐藏。此外,如果选中了多个复选框,我需要在两个类中显示这些项目。我有这个:
HTML:
<div class="categs" id="filters">
<div class="categhead">
<p>Ranking</p>
</div>
<div class="categsort">
<input class="hide-checkbox" type="checkbox" id="tagchallenger" value="challenger" style="display: none;">
<label for="tagchallenger">Challenger</label>
</div>
<div class="categsort">
<input class="hide-checkbox" type="checkbox" id="tagmaster" value="master" style="display: none;">
<label for="tagmaster">Master | Diamond</label>
</div>
<div class="categsort">
<input class="hide-checkbox" type="checkbox" id="tagplat" value="plat" style="display: none;">
<label for="tagplat">Platinum | Gold</label>
</div>
<div class="categsort">
<input class="hide-checkbox" type="checkbox" id="tagsilver" value="silver" style="display: none;">
<label for="tagsilver">Silver | Bronze</label>
</div>
<script type="text/javascript">
[].forEach.call(document.querySelectorAll('.hide-checkbox'), function(element) {
element.style.display = 'none';
});
</script>
</div>
JavaScript:
var streameach = $('.streampic .row .col-md-4');
function updateContentVisibility(){
var checked = $('#filters :checkbox:checked');
if(checked.length){
streameach.hide();
checked.each(function() {
$("." + $(this).val()).show();
});
} else {
streameach.show();
}
}
$('#filters :checkbox').click(updateContentVisibility);
updateContentVisibility();
}
然后我也有
<div class="streamtag1">...</div>
和
var stream0 = "<? echo $lolarray->streams[0]->channel->name; ?>";
if (stream0 == "riotgames") {
$('streamtag1').addClass('master');
};
现在,当单击“master”复选框时,它会隐藏所有 div,但不会显示添加了 master 类的那些,它应该连接到该复选框。
【问题讨论】:
-
streameach 未定义,请发布工作代码
-
console.log(checked);- 查看您的代码是否捕获了正确的复选框。 -
它在您的代码的精简版本中运行良好:jsfiddle.net/zkn7vw6e。所以,问题一定出在其他地方。发布完整的代码或者更好的 jsFiddle 对您很有帮助。
-
“女巫复选框”,哈哈
... -
我认为您必须设置一个带有多个复选框的非工作示例,以向我们展示这应该如何工作?
标签: javascript jquery html checkbox filtering