2011-05-26 23 views

cevap

78

Bunu geride kalan filter() kullanabilirsiniz:

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

Magical. Teşekkür ederim. – David

+1

Ayrıca, daha yakın bir yaklaşım olan – TFD

+2

@TFD için checkout @pi cevabını da kullanın, bu yaklaşım biraz farklıdır, çünkü içerdiği() karakterleri alt dizelerle eşleşir - bu, metni yalnızca 'foobar' olan öğelerle eşleşir. foo'. –

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

metin 'foo' olan bir hücreyi sahip satırlar için metin kırmızı renge dönüşür.

31

Bunun eski bir yazı olduğunu biliyorum, ancak bir tablodaki bir dizeyi aramaya alternatif [sağlam değil, basit] yaklaşımını paylaşabileceğimi düşündüm. Burada, nerede aradığınız metin iğne bulunur. Metin 'kutusuna' ile ilgili arama yaptıklarında

Örneğin, olurdu:

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

Bu, bu metin ile tüm unsurları dönecekti. Ek kriterler birden elemanları

+0

Bu çözüm, bunu içeren HER tr içeriyor. Eğer bir masa içinde bir masa varsa .. (vs.) o zaman en üstteki tr'i seçer ve altındaki her şeyi saklar, ama OP en yakın tr ister. – Malachi

2

arama metne dayalı her tr ve göstermek/gizlemek tr içeride tüm td en bu arayacaktır metin

$.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 dönerse daraltmak için kullanılabilir RegExp eşleştirme metnini kullanarak arama() yöntemiyle gerçekleştirebilirsiniz:

İlgili konular