2011-10-31 143 views

回答

11

你的問題是相當模糊,但總的想法是這樣的:

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

這裏有一個working example。它首先選擇所有表格單元格,然後根據一些文本對其進行過濾,然後刪除任何剩餘行的父級(應該是tr)。

如果您不關心個別欄,您可以選擇tr元素並擺脫parent的電話。這將仍然有效,因爲text將返回所選tr的所有子項的文本。根據意見

更新以上將從DOM完全刪除匹配的錶行。如果你想隱藏它們,你可以用hide代替remove。然後,如果您想使行再次可見,你可以簡單地這樣做:

$("tr").show(); 

將選擇所有tr元素,並顯示它們(那些已經很明顯不會受到影響,所以只是那些以前隱藏將再次可見)。

+0

這也適用於.hide()嗎?如果可能的話,如果我想重置過濾器,顯示/取消隱藏所有表格行是一種好方法? – mko

+1

@John - 是的,使用'hide'可以正常工作。看我的編輯。 –

0

所有表格過濾背後的基本思想是隱藏所有行,然後顯示<td>包含搜索字符串的內容。

使用jQuery神奇的是這樣完成的:

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

但沒有必要使用jQuery這個 - 我編寫它的純JS的解決方案。你可以找到它here