jQuery - найти строку таблицы, содержащую ячейку таблицы, содержащую определенный текст - PullRequest
50 голосов
/ 26 мая 2011

Мне нужно получить элемент tr, который содержит элемент td, который содержит определенный текст.td будет содержать этот текст и только этот текст (поэтому мне нужна логика text = 'foo', а не text contains 'foo').

Поэтому мне нужен эквивалент следующего псевдо-jQuery:

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

Может ли кто-нибудь предоставить правильный синтаксис?

Ответы [ 5 ]

88 голосов
/ 26 мая 2011

Вы можете использовать filter () , чтобы сделать это:

var tableRow = $("td").filter(function() {
    return $(this).text() == "foo";
}).closest("tr");
39 голосов
/ 21 ноября 2013

Я знаю, что это старый пост, но я подумал, что могу предложить альтернативный [не такой надежный, но более простой] подход к поиску строки в таблице.

$("tr:contains(needle)"); // где игла - это текст, который вы ищете.

Например, если вы ищете текстовое поле, это будет:

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

Это вернет все элементы с этим текстом. Дополнительные критерии могут быть использованы, чтобы сузить его, если он возвращает несколько элементов

15 голосов
/ 26 мая 2011
$(function(){
    var search = 'foo';
    $("table tr td").filter(function() {
        return $(this).text() == search;
    }).parent('tr').css('color','red');
});

Превратит текст в красный для строк, в которых есть ячейка с текстом 'foo'.

2 голосов
/ 13 ноября 2014

Это будет искать текст во всех td внутри каждого tr и показывать / скрывать 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();
 });
0 голосов
/ 16 августа 2017
   <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 соответствующий текст

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...