【发布时间】:2017-08-25 21:17:43
【问题描述】:
期望的行为
根据所有表格的前两列中的搜索匹配显示或隐藏表格(整个表格,而不是表格单元格) - 如果在 <tr> 的第一或第二 <td> 中存在匹配,则显示表格,否则隐藏表格。
我的尝试
$("input").on("keyup", function() {
var matcher = new RegExp($(this).val(), "gi");
$(".my_table")
.hide()
.filter(function() {
return matcher.test($(this).find("td").text());
})
.show();
});
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 50%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<table class="my_table">
<thead>
<tr>
<th>
First Name
</th>
<th>Last Name</th>
<th>Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>David</td>
<td>Johnman</td>
<td>Here is some text</td>
</tr>
<tr>
<td>Felix</td>
<td>Mann</td>
<td>Cake</td>
</tr>
<tr>
<td>Peter</td>
<td>Pan</td>
<td>Green green grass of home</td>
</tr>
</table>
<br><br>
<table class="my_table">
<thead>
<tr>
<th>
First Name
</th>
<th>Last Name</th>
<th>Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>David</td>
<td>Stone</td>
<td>Here is text</td>
</tr>
<tr>
<td>Trevor</td>
<td>Barry</td>
<td>Cake</td>
</tr>
<tr>
<td>Xylophone</td>
<td>Greet</td>
<td>Green green grass of home</td>
</tr>
</table>
如果这有助于定位搜索,不反对将类放在每行的前两个表格单元格中,只是不完全确定如何定位正在过滤的表格实例。
最终我想在输入 3 个字符后开始过滤,因此可能会将代码包装在输入长度的条件检查中,并在输入长度为 0 时显示所有表格(在退格内容之后)。
【问题讨论】:
标签: jquery jquery-filter