目前我正在使用bootstrap-multiselect插件处理过滤表。我很难让它正常工作。我想根据multiselect中的选定值显示/隐藏表格行。例如。如果row的值为已激活,则只显示具有激活值的行,而其他行将被隐藏。如果我选择了“已激活”和“已停用”,则会显示值为已激活和已停用的行。如果我选择全部选定,则应显示所有行。检查我的代码:
$('#custom-select').multiselect({
includeSelectAllOption: true,
onChange: function(option, checked) {
var selected = [];
$('#custom-select option:selected').each(function() {
selected.push($(this).val());
});
console.log(selected);
$.each(selected, function(i, val) {
$('#custom-table tr > td:not(:contains('+val+'))').closest('tr').hide();
$('#custom-table tr > td:contains('+val+')').closest('tr').show();
//console.log(val);
});
}
});
我目前的工作是 jsfiddle 。
答案 0 :(得分:4)
您正在每个循环中隐藏表行tr
。因此,上次循环运行时,它会隐藏它应该显示的行。在执行show
之前,将其从循环中取出并隐藏所有行。
$(document).ready(function() {
$('#custom-select').multiselect({
includeSelectAllOption: true,
onChange: function(option, checked) {
var selected = [];
$('#custom-select option:selected').each(function() {
selected.push($(this).val());
});
$('#custom-table tr').hide(); // <-----
$.each(selected, function(i, val) {
$('#custom-table tr > td:contains('+val+')').closest('tr').show();
});
}
});
});