web-dev-qa-db-fra.com

jQuery - recherche une ligne de tableau contenant une cellule de tableau contenant un texte spécifique

Je dois obtenir un élément tr qui contient un élément td qui contient du texte spécifique. La td contiendra ce texte et uniquement ce texte (j'ai donc besoin de text = 'foo' et non de text contains 'foo' logique).

J'ai donc besoin de l'équivalent du 'pseudo jQuery' suivant:

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

Quelqu'un peut-il fournir la syntaxe correcte?

48
David

Vous pouvez utiliser filter () pour le faire:

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

Je sais que ceci est un ancien post, mais je pensais pouvoir partager une approche alternative [moins robuste, mais plus simple] pour la recherche d'une chaîne dans une table.

$("tr:contains(needle)"); // où needle correspond au texte que vous recherchez.

Par exemple, si vous recherchez le texte "boîte", ce serait:

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

Cela renverrait tous les éléments avec ce texte. Des critères supplémentaires pourraient être utilisés pour le réduire s'il renvoie plusieurs éléments

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

Rendra le texte en rouge pour les lignes qui ont une cellule dont le texte est 'foo'.

14
Rezler

Ceci recherchera du texte dans tous les td de chaque tr et affichera/cachera les tr en fonction du texte

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

Démo Vous pouvez utiliser la méthode search () en utilisant RegExp correspondant texte

0
Kamal