1

我想对表格的一列执行 HTML 表格搜索。此示例中的表在此处显示 2 列。我已将类添加到标签以选择仅过滤“标题 1”列 - 但是,代码仍在查看过滤器的“标题 2”列。

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();
});

任何人都可以对我所犯的错误提供一些建议吗?

4

2 回答 2

0

根据 OP 的评论。

我认为您遇到了麻烦,因为您的选择器太详细了。尝试:

var $rows = $(".col1", "table");
于 2013-11-15T04:11:12.657 回答
0

您的代码的主要问题是,当您这样做时hide(),您将隐藏<td>而不是隐藏,以便在隐藏of时<tr>最终搜索。因此,在这方面,您需要使用父级并将其隐藏。col2<td>col1<tr>

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

我看到的另一个问题是你$row最初很好,但是一旦你至少隐藏了一行,你最终会使用更少的行。因此,在这方面,您需要保留原始行数并使用它来隐藏需要隐藏的行并显示需要显示的行。

查看我更新的 JSFiddle 演示

于 2013-11-15T04:28:43.317 回答