这个问题的标题可能会产生误导,但我想不出更好的方式来表达它。
让我谈谈这一点。我正在使用按钮来过滤状态表。如果我有按钮A和按钮B激活,我只想显示A和B,其余的都是隐藏的。目前我只能显示A或B,而不是两者。
var aSelected = [];
$(".admin_view #filterTable tr td button").on("click", function() {
$(this).toggleClass("selected"); //class to show user button is active
//Add to array if not in already
if ($.inArray(this.id,aSelected) == -1) {
aSelected.push(this.id);
//Remove from array if button is not active
} else if ($.inArray(this.id,aSelected) >= 0) {
aSelected.splice(aSelected.indexOf(this.id), 1);
}
//Show all if array is empty
if (!aSelected.length) {
$(".admin_view #applicantTable tbody tr").each(function() {
$(".admin_view #applicantTable tbody tr").removeClass("hidden");
});
}
//This is the section I need help with
$.map(aSelected, function(a) {
$(".admin_view #applicantTable tbody tr").not("."+a).addClass("hidden");
$(".admin_view #applicantTable tbody tr."+a).removeClass("hidden");
});
});
我需要找到一种方法来与整个阵列进行比较,而不是与整个阵列进行比较。
答案 0 :(得分:1)
目前,您在aSelected中隐藏每个项目的所有其他元素,而不是仅在开头。如果您先隐藏所有内容然后显示所需的元素,它应该可以工作:
//This is the section I need help with
$(".admin_view #applicantTable tbody tr:not(.hidden)").addClass("hidden");
$.map(aSelected, function(a) {
$(".admin_view #applicantTable tbody tr.hidden."+a).removeClass("hidden");
});