2011-10-31 11 views

cevap

11

Sorunuz oldukça muğlak olmakla birlikte, genel bir fikir böyle bir şey olurdu: Burada

$("td").filter(function() { 
    return $(this).text().indexOf("whatever") !== -1; 
}).parent().remove(); 

bir working example bu. Önce tüm tablo hücrelerini seçer, sonra bazı metne göre filtreler ve kalan satırların üst öğesini (tr olmalıdır) kaldırır.

Tek tek sütunları umursamıyorsanız, tr öğelerini seçebilir ve parent numaralı aramayı silebilirsiniz. Bu, text seçili tr'un tüm çocukların metinlerini döndüreceği için çalışmaya devam edecektir. yorumların

dayalı

Güncelleme yukarıdaki tamamen DOM eşleşen tablo satırlarını kaldıracaktır. Bunları gizlemek isterseniz, remove'u hide ile değiştirebilirsiniz. bu yüzden sadece olanları daha önce gizlenmiş, tüm tr unsurları seçer ve onları (zaten etkilenmeyecektir görülebilir olanları gösterir

$("tr").show(); 

: o zaman basitçe böyle bir şey yapabileceğini tekrar satırlar görünür hale isteseydim tekrar görünür hale gelecek).

+0

bu, .hide() ile birlikte çalışacak mı? Mümkünse, filtreyi sıfırlamak istendiğinde tüm tablo satırlarını göstermek/göstermek için iyi bir yol ne olurdu? – mko

+1

@John - Evet, 'hide'ı kullanarak iyi çalışırdı. Düzenlememe bak. –

0

Tüm tablo filtrelemenin ardındaki temel fikir, tüm satırları gizlemek ve daha sonra, <td> içeriğinin arama ölçütünün dahil olduğu yerleri göstermektir.

$('tr').filter(":contains('" + searchstring + "')").show(); 

Ama bunun için jQuery kullanmaya gerek yoktur - bunun için düz bir JS-çözüm kodlu ettik:

jQuery ile sihirli böyle yapılır. here'u bulabilirsiniz.