jQuery - 查找包含包含特定文本的表格单元格的表格行
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6135665/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jQuery - find table row containing table cell containing specific text
提问by David
I need to get a tr
element which contains a td
element which contains specific text. The td
will contain that text and only that text (so I need text = 'foo'
not text contains 'foo'
logic).
我需要获取一个tr
元素,其中包含一个td
包含特定文本的元素。在td
将包含文本和只有文字(所以我需要text = 'foo'
不是text contains 'foo'
逻辑)。
So I need the equivalent of the following 'pseudo jQuery':
所以我需要等效于以下“伪 jQuery”:
var tableRow = $(table td[text = 'foo']).parent('tr');
Can anyone provide the correct syntax?
谁能提供正确的语法?
回答by Frédéric Hamidi
回答by pi.
I know this is an old post but I thought I could share an alternative [not as robust, but simpler] approach to searching for a string in a table.
我知道这是一篇旧帖子,但我想我可以分享另一种[不是那么健壮,但更简单]的方法来搜索表中的字符串。
$("tr:contains(needle)");
//where needle is the text you are searching for.
$("tr:contains(needle)");
//其中,needle 是您要搜索的文本。
For example, if you are searching for the text 'box', that would be:
例如,如果您要搜索文本“box”,则为:
$("tr:contains('box')");
This would return all the elements with this text. Additional criteria could be used to narrow it down if it returns multiple elements
这将返回带有此文本的所有元素。如果它返回多个元素,则可以使用其他条件来缩小范围
回答by Rezler
$(function(){
var search = 'foo';
$("table tr td").filter(function() {
return $(this).text() == search;
}).parent('tr').css('color','red');
});
Will turn the text red for rows which have a cell whose text is 'foo'.
将具有文本为“foo”的单元格的行的文本变为红色。
回答by Nalan Madheswaran
This will search text in all the td's inside each tr and show/hide tr's based on search text
这将在每个 tr 内的所有 td 中搜索文本,并根据搜索文本显示/隐藏 tr
$.each($(".table tbody").find("tr"), function () {
if ($(this).text().toLowerCase().replace(/\s+/g, '').indexOf(searchText.replace(/\s+/g, '').toLowerCase()) == -1)
$(this).hide();
else
$(this).show();
});
回答by Kamal
<input type="text" id="text" name="search">
<table id="table_data">
<tr class="listR"><td>PHP</td></tr>
<tr class="listR"><td>MySql</td></tr>
<tr class="listR"><td>AJAX</td></tr>
<tr class="listR"><td>jQuery</td></tr>
<tr class="listR"><td>JavaScript</td></tr>
<tr class="listR"><td>HTML</td></tr>
<tr class="listR"><td>CSS</td></tr>
<tr class="listR"><td>CSS3</td></tr>
</table>
$("#textbox").on('keyup',function(){
var f = $(this).val();
$("#table_data tr.listR").each(function(){
if ($(this).text().search(new RegExp(f, "i")) < 0) {
$(this).fadeOut();
} else {
$(this).show();
}
});
});
DemoYou can perform by search() method with use RegExp matching text
Demo您可以通过 search() 方法执行使用 RegExp 匹配文本