使用jquery过滤表行

时间:2011-10-31 07:41:14

标签: jquery filter row

我想知道如何根据列值过滤表行。排除了插件,我想弄清楚如何让这个东西起作用。

3 个答案:

答案 0 :(得分:16)

你的问题很模糊,但一般的想法是这样的:

$("td").filter(function() {
    return $(this).text().indexOf("whatever") !== -1;
}).parent().remove();

这是一个working example。它首先选择所有表格单元格,然后根据某些文本过滤它们,并删除任何剩余行的父级(应该是tr)。

如果您不关心单个列,则可以选择tr元素并取消对parent的调用。这仍然有效,因为text将返回所选tr的所有子项的文本。

根据评论

更新

以上将完全从DOM中删除匹配的表行。如果您只想隐藏它们,可以将remove替换为hide。如果您希望再次显示行,则可以执行以下操作:

$("tr").show();

选择所有tr元素并显示它们(已经可见的元素不会受到影响,因此之前隐藏的元素将再次显示)。

答案 1 :(得分:2)

这是另一个过滤表行的示例。将过滤器值和表行文本设置为小写会使过滤器不区分大小写。

$(function() {
  $("#filter").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#example-table > tbody > tr").filter(function() {      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
<!DOCTYPE html>
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
  <div class="form-group">
    <label for="filter">Filter:</label> <input type="text" id="filter">
  </div>
  <table id="example-table">
    <thead>
      <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Age</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Bob</td>
        <td>Smith</td>
        <td>50</td>
      </tr>
      <tr>
        <td>Jenny</td>
        <td>Smith</td>
        <td>51</td>
      </tr>
      <tr>
        <td>Mike</td>
        <td>Smithers</td>
        <td>52</td>
      </tr>
    </tbody>
  </table>
</body>
</html>

答案 2 :(得分:1)

所有表过滤背后的基本思想是隐藏所有行,然后显示$('tr').filter(":contains('" + searchstring + "')").show(); 的内容包含搜索字符串的那些行。

使用jQuery,魔术就像这样完成:

    Dim mainTab As Object   'Tab 'main'
    Dim tranTypeSize As Integer 'Length of entries for transaction type
    Dim dropdownRange As Range 'Dynamic range for dropdown
    Set mainTab = Sheets("Main")

        tranTypeSize = Sheets("Misc").Cells(Rows.Count, 1).End(xlUp).Row
        Set dropdownRange = Sheets("Misc").Range("A1:A" & tranTypeSize) ' <- problem

    Call createDropdownList(mainTab.Range("G8"), dropdownRange) '<- arguments passed are wrong obj?
    ----------------------------------------------------------------
Sub createDropdownList(ByRef curCell As Range, _
    ByVal targetList As Range)

    With curCell.Validation ' <- I think error, though it passes this line
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=targetList ' <- error

但是没有必要为此使用jQuery - 我为它编写了一个简单的JS解决方案。你可以找到它here