web-dev-qa-db-de.com

jQuery - Sucht eine Tabellenzeile mit einer Tabellenzelle, die bestimmten Text enthält

Ich brauche ein tr-Element, das ein td-Element enthält, das bestimmten Text enthält. Die Variable td enthält diesen Text und nur diesen Text (daher brauche ich text = 'foo' nicht text contains 'foo' Logik).

Ich brauche also das Äquivalent des folgenden "Pseudo-jQuery":

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

Kann jemand die korrekte Syntax angeben?

48
David

Sie können filter () verwenden, um dies zu tun:

var tableRow = $("td").filter(function() {
    return $(this).text() == "foo";
}).closest("tr");
85

Ich weiß, dass dies ein alter Beitrag ist, aber ich dachte, ich könnte einen alternativen (nicht so robusten, aber einfacheren) Ansatz zur Suche nach einem String in einer Tabelle teilen.

$("tr:contains(needle)"); // wobei Nadel der gesuchte Text ist.

Wenn Sie beispielsweise nach dem Textfeld suchen, lautet das:

$("tr:contains('box')");

Dies würde alle Elemente mit diesem Text zurückgeben. Wenn Sie mehrere Elemente zurückgeben, könnten zusätzliche Kriterien verwendet werden, um sie einzugrenzen

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

Wird den Text für Zeilen rot, die eine Zelle haben, deren Text 'foo' ist.

14
Rezler

Dadurch wird Text in allen TDs in jedem tr gesucht und trs basierend auf dem Suchtext angezeigt/verborgen

 $.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();
 });
2
   <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();
            }
        });
    });

Demo Sie können eine search () -Methode mit RegExp-übereinstimmendem Text ausführen

0
Kamal