jQuery – 查找包含特定文本的表格单元格的表格行
我需要得到一个包含特定文本的td
元素的tr
元素。 td
将包含该文本,只有文本(所以我需要text = 'foo'
不是text contains 'foo'
逻辑)。
所以我需要相当于下面的“伪jQuery”:
var tableRow = $(table td[text = 'foo']).parent('tr');
任何人都可以提供正确的语法?
你可以使用filter()来做到这一点:
var tableRow = $("td").filter(function() { return $(this).text() == "foo"; }).closest("tr");
我知道这是一个旧的post,但我想我可以分享一个替代[不健壮,但更简单]的方法来search表中的string。
$("tr:contains(needle)");
//其中needle是您正在search的文本。
例如,如果您正在search文本“框”,那将是:
$("tr:contains('box')");
这将返回所有与这个文本元素。 如果返回多个元素,可以使用其他标准缩小范围
$(function(){ var search = 'foo'; $("table tr td").filter(function() { return $(this).text() == search; }).parent('tr').css('color','red'); });
将文本为'foo'的单元格的行改为红色。
这将在每个tr内的所有td中search文本,并根据search文本显示/隐藏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(); });
<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(); } }); });
演示您可以使用search()方法使用RegExp匹配文本执行