【发布时间】:2016-11-26 07:05:43
【问题描述】:
$('.checkbox').on('change', function() {
$('.pagination').hide();
$('.callout').hide();
$('.checkbox').each(function() {
if ($(this).prop('checked') === true) {
var checkboxName = $(this).val();
$('.callout').each(function() {
var calloutArray = $(this).data();
var i;
for (i = 0; i < calloutArray.category.length; i++) {
$(this).hide();
if (checkboxName === calloutArray.category[i]) {
$(this).show();
}
}
});
}
});
});
为了解释这个功能,它基本上会监听是否已单击复选框,然后隐藏页面上的所有标注。
然后它会遍历每个复选框并检查页面上哪些是正确的。然后我创建一个存储当前复选框值的变量。
在此之后,我想遍历每个标注并从数据属性中提取其数据。
然后我循环遍历数组中的每个字符串并无论如何隐藏标注。但是,如果标注的数组值与复选框值相同,那么我需要显示它。
这似乎在没有隐藏的情况下工作。但是,如果标注不包含相同的已检查类别名称,我需要隐藏标注,这是我遇到问题的地方。
如果我已经隐藏了标注,If 语句似乎永远不会返回 true。所以问题是如果选定的复选框与标注数组字符串之一匹配,我如何显示标注,但如果字符串不在标注数组中,则隐藏标注。
【问题讨论】:
标签: javascript jquery arrays checkbox