2011-05-26 169 views
45

我需要獲取包含具有特定文本的td元素的tr元素。 td將包含該文本和只有該文本(所以我需要text = 'foo'而不是text contains 'foo'邏輯)。jQuery - 查找包含特定文本的表格單元格的表格行

所以我需要下面的「僞jQuery的」等價的:

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

誰能提供正確的語法?

回答

78

您可以使用filter()做到這一點:

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

不可思議。謝謝。 – David 2011-05-26 10:06:48

+1

同時結帳@pi回答下面的更近的方法 – TFD 2015-07-07 16:12:57

+2

@ TFD,這種方法有點不同,因爲'contains()'匹配子字符串 - 它將匹配其文本是'foobar'的元素,例如,不僅是' foo'。 – 2015-07-07 16:16:35

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

會變成文本紅色其中有一個細胞,其文字是「富」的行。

31

我知道這是一箇舊的帖子,但我想我可以分享一個替代[不像健壯,但更簡單]的方法來搜索表中的字符串。

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

例如,如果您正在搜索的文本「盒子」,這將是:

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

這將返回所有與這段文字的元素。附加標準可以用來縮小它,如果它返回多個元素

+0

此解決方案將包含任何包含該tr的tr。所以如果你在一個表格內有一個表格(等等),那麼它會選擇最上面的tr並隱藏它下面的所有內容,但是OP想要最接近的tr。 – Malachi 2016-02-22 17:16:42

2

在所有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
<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 您可以使用搜索()方法使用RegExp匹配文本來執行

相關問題