javascript - 在隐藏整行的同时搜索表格单元格
问题描述
我有一个如下表:
<table>
<tr>
<td>Title</td>
<td>
Description<br>
<input type="text" id="search" placeholder="Search description text">
</td>
<td>Active</td>
</tr>
<tr>
<td>Apple</td>
<td name="descSearch">It's a fruit</td>
<td>Active</td>
</tr>
<tr>
<td>Pear</td>
<td name="descSearch">It's also fruit</td>
<td>No</td>
</tr>
</table>
我正在使用一些代码来搜索该description
列,并在它不包含正在搜索的内容时将其隐藏。问题只是td
被隐藏了。我尝试将选择器更改为设置$row
,但随后它在我指定的所有单元格中进行了搜索。仅搜索时如何隐藏整行description
?这是我用来搜索的内容:
var $rows = $('td[name=descSearch]');
$('#search').keyup(function() {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
});
解决方案
当前$rows
从 this: 返回$('td[name=descSearch]')
,这是一个单元格的集合。这就是你最终要呼吁.hide()
的。在不改变搜索逻辑的情况下,您可以<tr>
在调用之前简单地选择最近的.hide()
。要在调用中包含相同的逻辑,您.show()
可能需要在两次调用中执行此操作。
像这样的东西:
$rows.closest('tr').show();
$rows.filter(function() {
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).closest('tr').hide();
推荐阅读
- c# - 如何在代码中配置 NHibernate SessionFactory
- php - 如何在代码点火器上用相同的 file_name 覆盖 file_ext
- android - Android、DynamoDb、Document API,如何更新项目?
- mysql - 节点服务器在 API 请求后没有返回任何响应
- javascript - 为什么 import { Thing } 可以工作,但不能 import Thing?
- php - 如何在控制器中的 laravel 5 中爆炸日期
- c++ - C++ 用图逆向自动微分
- kotlin - RESTEASY003145:找不到内容类型 text/xml 的 MessageBodyReader;charset=UTF-8
- numpy-ndarray - 如何将索引相关函数应用于 numpy ndarray?
- django - Django QuerySet Limit 多次访问数据库?