javascript - jQuery 实时搜索 - 也删除表头

标签 javascript jquery html html-table

我在 this link 使用正则表达式搜索代码, 以允许实时搜索通过 php 在服务器端填充的相当大的表。

与上面链接中描述的场景略有不同,我使用表头标签将表行的 block 分组(标记)在一起。我防止这些表标题行与表行的其余部分一起消失,以便在搜索时,结果仍嵌套在它们的组中。

我希望表格标题行也消失,但前提是它与下一个表格标题行之间没有表格行。我不确定计算行数是否有效,因为行并没有消失,它们只是被隐藏了。

举个例子,我的 table 是这样布置的:

HTML:

 <table>
  <tr>
     <th colspan="2">Group 1</th>
  </tr>
  <tr  class="searchable">
    <td>Record 1</td>
    <td>Record 2</td>
  </tr>
  <tr  class="searchable">
    <th>Group 2</th>
  </tr>
  <tr>
    <td>Record 3</td>
    <td>Record 4</td>
  </tr>
</table>

jQuery:

$( document ).ready(function() {
    var $rows = $('tr.searchable');

    $('#search').keyup(function(e) {

        if (e.keyCode == 27) { $(this).val("") }

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

感谢所有帮助!!谢谢!

最佳答案

我通过添加另一个类(每个组/标签都是唯一的)并在“.keyup()”部分中计算每个类的“:visible”行来解决我的困境。一旦每个类中的行数下降到指定数量以下,我就在 if 语句中使用“.hide()”来使表头消失。 if 语句的 else 端使用“.show()”在类数超过指定数量时返回表头。

关于javascript - jQuery 实时搜索 - 也删除表头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568959/

相关文章:

javascript - 对类选择的元素数组使用 FOR 循环,并在每个元素上调用函数

javascript - Jade.js 与 jQuery

javascript - 如何在 JQuery 中捕获拖放事件?

javascript - 如何将 Tangle.js 作为外部资源添加到 jsfiddle

javascript - d3.js - 基于文本宽度的文本位置

javascript - 使用滚动调整插件大小

jquery - 是否可以设置自动完成结果的最大数量?

html - Twitter Bootstrap 3 中按钮组之间的水平分隔线

javascript - 将 html5 &lt;script async> 与非异步 &lt;script&gt; 标签混合

javascript - 简单的 javascript : arrays, 和表单信息收集 #2