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匹配文本执行