我有類似結構的HTML表這一點,但是:JQuery的 - 搜索HTML表格 - 行跨度問題
- rowspans不是固定大小的
- 有可能在一個給定的表中的多個rowspans(其中其每一個可以
- 生成表不同長度)的
<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>
使用第一列進行搜索。輸入將隱藏所有行「1」(如搜索搜索詞時
<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>
的問題:我正在與行跨度麻煩使用如下所述本次搜索/過濾功能時, 'v') - 只有行的第一行被隱藏,而所有後續行的部分行仍然存在。所以行[6,7,8,9]將永遠保持。
實施例的表:
[1 - 2,3,4,5] [ - 6,7,8,9] [v - w,x,y,z]
在搜索 ''(正確):
[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]
我如何去正確地隱藏這些子rowspans?
更新: 我認爲解決的辦法在於將取決於行跨度數不同的類,那麼具有與.parent適當數量的()下一個(我).hide不同的方式處理這些類的函數(。 ) - 雖然我不知道如何做到這一點,以及這種方法是否正確。
你的小提琴不會出現我在Chrome上工作 – mkoryak
順便說一句,你的表html無效(儘管可能就在這個例子中),你應該在'#foo'中有'thead'元素 – mkoryak
@mkoryak這是因爲你沒有選擇運行它在jsFiddle方面啓用了jQuery:) – Luke