jQuery - 查找包含特定文本的表格单元格的表行

66

我需要获取包含特定文本的td元素所在的tr元素,即td元素仅包含该文本(因此需要使用text = 'foo'而不是text contains 'foo'逻辑)。

因此,我需要相当于以下“伪jQuery”:

var tableRow = $(table td[text = 'foo']).parent('tr');

有人能提供正确的语法吗?

5个回答

115
你可以使用 filter() 来实现这个功能:
var tableRow = $("td").filter(function() {
    return $(this).text() == "foo";
}).closest("tr");

1
另外,查看下面@pi的答案,以获取更近期的方法。 - TFD
4
@TFD,这种方法有些不同,因为 contains() 可以匹配子字符串 —— 比如说它会匹配文本是 foobar 的元素,而不仅仅是 foo - Frédéric Hamidi

59

我知道这是一个旧帖子,但我想分享一种搜索表格中字符串的替代方法[不如之前那种方法稳定,但更简单]。

$("tr:contains(needle)"); //其中needle是你要搜索的文本。

例如,如果你要搜索文本'box',那么代码应该是:

$("tr:contains('box')");
这会返回所有包含此文本的元素。如果返回多个元素,则可以使用其他条件来缩小范围。

1
这个解决方案将包含包含那个的任何tr。因此,如果您在一个表格中嵌套了另一个表格等等,它将选择顶部的tr并隐藏其下的所有内容,但OP想要最接近的tr。 - Malachi
你也可以使用 $("td:contains('box')"); 来获取包含该文本的确切列。 - stomtech
你还可以使用$("td:contains('box')");来获取找到文本的确切列。 - stomtech

18
$(function(){
    var search = 'foo';
    $("table tr td").filter(function() {
        return $(this).text() == search;
    }).parent('tr').css('color','red');
});

如果某一行中的单元格文本为 'foo',则会将该行文本变为红色。


2
这将在每个内部的所有中搜索文本,并根据搜索文本显示/隐藏。
 $.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();
 });

1
   <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()方法和正则表达式匹配文本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接