但是,我有一个与此结构类似的 HTML 表:
- 行跨度不是固定大小
- 给定表中可以有多个行跨度(每个可以有不同的长度)
- 该表已生成
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>
<label for="searchbox">Search:</label>
<input type="text" id="filter1" />
</td>
</tr>
</tbody>
</table>
<table id="foo" border="1px">
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
</tr>
<tbody id="data">
<tr>
<td class="col1" rowspan="2">1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td class="col1">v</td>
<td>w</td>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
</table>
使用第一列完成搜索。使用下面描述的搜索/过滤功能时,我遇到了行跨度问题:
<script language="javascript" type="text/javascript">
$(function() {
$('#filter1').change(function() {
$("#foo td.col1:contains('" + $(this).val() + "')").parent().show();
$("#foo td.col1:not(:contains('" + $(this).val() + "'))").parent().hide();
});
});
</script>
问题是当输入将隐藏所有行的搜索词时'1'(例如搜索'v') - 只有行跨度的第一行被隐藏,而行跨度的所有后续行部分仍然存在。所以行 [6,7,8,9] 将永远保留。
示例表:
[1 - 2,3,4,5] [ - 6,7,8,9] [v - w,x,y,z]
搜索“ 1 ”(正确):
[1 - 2,3,4,5] [ - 6,7,8,9]
搜索“ v ”(不正确):
[ - 6,7,8,9] <- this row should not be returned [v - w,x,y,z]
如何正确隐藏这些子行跨度?
更新: 我认为解决方案在于根据行数添加不同的类,然后使用适当数量的 .parent().next(i).hide() 以不同方式处理这些类的函数 - 尽管我不是确定如何做到这一点以及这种方法是否正确。