2013-11-15 14 views
1

我想在表格的一列上執行HTML表格搜索。該示例中的表格here顯示2列。我已經添加了類的標籤來選擇列「標題1」只能過濾 - 但是,代碼仍在查看過濾器的「標題2」列。HTML表格 - >在多列表中選擇要過濾的列1

var $rows = $('#table tbody tr td[class = "col1"]'); 
$('#search').keyup(function() { 

var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', 
    reg = RegExp(val, 'i'), 
    text; 

$rows.show().filter(function() { 
    text = $(this).text().replace(/\s+/g, ' '); 
    return !reg.test(text); 
}).hide(); 
}); 

任何人都可以提供一些建議給我正在犯的錯誤嗎?

回答

0

代碼的主要問題是,當你做hide(),你隱藏了<td>代替<tr>讓你最終搜索col2col1<td>是隱藏的。所以,在這方面你需要使用父母<tr>並隱藏它。

}).parent("tr").hide(); 

還有一個問題,我看到的是,你的$row最初是好的,但一旦你 隱藏至少你結束了更少的行連續地工作着。因此,在這方面,您需要保留原始行數並使用它來隱藏那些需要隱藏的行並顯示需要顯示的行。

看到我更新JSFiddle Demo

+0

這個答案仍在過濾第二列。 – JnL

+0

您只想過濾第一列?顯示被過濾的行的第一列和第二列? – Edper

+0

@ user2134003檢查我的更新答案。上帝保佑。 – Edper

0

根據OP的評論。

我想你會遇到麻煩,因爲你的選擇器太詳細了。嘗試:

var $rows = $(".col1", "table"); 
+0

的問題是,即使我選擇的第一列,代碼過濾兩列時,我只想要一個過濾。 – JnL