Câu hỏi jQuery - tìm hàng trong bảng chứa ô bảng chứa văn bản cụ thể


Tôi cần có một tr phần tử chứa td phần tử chứa văn bản cụ thể. Các td sẽ chứa văn bản đó và chỉ văn bản đó (vì vậy tôi cần text = 'foo' không phải text contains 'foo' logic).

Vì vậy, tôi cần tương đương với 'pseudo jQuery' sau đây:

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

Bất cứ ai có thể cung cấp cú pháp chính xác?


45
2018-05-26 08:26


gốc




Các câu trả lời:


Bạn có thể dùng bộ lọc () Để làm việc đó:

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

82
2018-05-26 08:30



Huyền diệu. Cảm ơn bạn. - David
Ngoài ra thanh toán @pi trả lời dưới đây cho một cách tiếp cận gần đây hơn - TFD
@ TFD, cách tiếp cận đó hơi khác một chút, contains() khớp với nền - nó sẽ khớp với các phần tử có văn bản foobar, chẳng hạn, không chỉ foo. - Frédéric Hamidi


Tôi biết đây là một bài viết cũ nhưng tôi nghĩ rằng tôi có thể chia sẻ một cách tiếp cận thay thế [không phải là mạnh mẽ, nhưng đơn giản] để tìm kiếm một chuỗi trong một bảng.

$("tr:contains(needle)"); // nơi kim là văn bản bạn đang tìm kiếm.

Ví dụ: nếu bạn đang tìm kiếm văn bản 'ô', điều đó sẽ là:

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

Điều này sẽ trả về tất cả các phần tử với văn bản này. Tiêu chí bổ sung có thể được sử dụng để thu hẹp nó nếu nó trả về nhiều phần tử


35
2017-11-21 10:42



Giải pháp này sẽ chứa BẤT K tr có chứa điều đó. Vì vậy, nếu bạn có một bảng trong một bảng bên trong .. (vv) sau đó nó sẽ chọn tr đầu và ẩn tất cả mọi thứ theo nó, nhưng OP muốn tr gần nhất. - Malachi


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

Sẽ chuyển văn bản màu đỏ cho các hàng có một ô có văn bản là 'foo'.


14
2018-05-26 08:39





Điều này sẽ tìm kiếm văn bản trong tất cả các td bên trong mỗi tr và hiển thị / ẩn tr dựa trên văn bản tìm kiếm

 $.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
2017-11-13 05:24





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

Bản giới thiệu Bạn có thể thực hiện bằng phương thức search () với sử dụng văn bản phù hợp RegExp


0
2017-08-16 09:34