带有列的HTML表格筛选器

时间:2013-11-14 15:46:35

标签: html filter html-table

我已经在SO here的示例中设置了一个基本表格,其中我添加了列标题。

有人可以提出如何修复表格过滤器的建议,这样它就不会隐藏列标题吗?这是我一直在测试的jsfiddle代码。

的Javascript

var $rows = $('#table tr');
$('#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();
});

搜索示例:如果您在搜索中键入apple,它会隐藏标题1和标题2.但是,我更喜欢在输入搜索后保留标题1和标题2。

2 个答案:

答案 0 :(得分:3)

我的建议:在标题中添加一个类,并将其从过滤结果中排除:

http://jsfiddle.net/7BUmG/1161/

<input type="text" id="search" placeholder="Type to search">
<table id="table">
     <tr class="header">
      <th>Title 1</th>
      <th>Title 2</th>
    </tr>    
    <tr>
      <td>Apple</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Grapes</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Orange</td>
      <td>Orange</td>
   </tr>
</table>

    var $rows = $('#table tr[class!="header"]');
    $('#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();
    });

答案 1 :(得分:1)

使用var $rows = $('#table tbody tr');