【发布时间】:2021-06-12 21:19:59
【问题描述】:
我正在尝试将一个过滤器应用于多个过滤器,以便根据 input 字段的值显示表格中的特定行。
我知道slice() 方法允许我们执行此过程,但是当使用多个值时,我不知道如何管理多个值的结构以达到预期的结果。
例如,如果 value 字段对应于1,5-10,15,它将显示第 1 行、第 5 到第 10 行和第 15 行。要知道 value 字段的顺序无关紧要。例如,这可能看起来像 5-10, 15, 20-30, 19 或 2,5,8-10,11-15。
这是我迄今为止尝试过的:
for (let i = 0; i <= 50; i++) {
let rows = '<tr>';
rows += '<td>100</td><td>100</td><td>100</td>';
rows += '</tr>';
$('table tbody').append(rows);
}
$('input').off().on('focusout', function() {
let format, row = '';
let val = $(this).val();
if (val.includes(',')) {
row = val.split(',');
}
format = !!row ? row : val;
if (!format.includes('-')) {
let filters = '';
for (let i = 0; i < format.length; i++) {
filters += '.not(":nth-child(' + format[i] + ')")';
}
$('table tbody tr') + filters + '.css("display", "none")';
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" placeholder="1-5,9">
<table border="border">
<thead>
<tr>
<th class="text-center">data</th>
<th class="text-center">data</th>
<th class="text-center">data</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
【问题讨论】:
标签: jquery html-table dom-manipulation