2010-01-09 65 views
3

我有一個表中有一些行。大於jquery中的選擇器?

下面是我的表的一個例子,只有很少的錶行。

<table> 
<tr> 
    <td>bob</td> 
    <td class="CheckThis">0 </td> 
</tr> 
<tr> 
    <td>Jim</td> 
    <td class="CheckThis">3</td> 
</tr> 
</table> 

現在我想看看第二個表細胞,使排之後具有價值大於0

因此,在我上面的例子中,將得到包含「3」,因爲它的整個行大於零。

我沒有看到任何部門做的更大,然後在jQuery中的東西,但我可以錯過它。

謝謝

回答

5

試試這個:

$("tr").filter(function() { 
    return parseInt($(this).children("td.CheckThis").text(), 10) > 0; 
}) 

這將選擇具有TD子元素與類CheckThis每個TR元素的含量爲大於0

+0

Why .text )?我不認爲我曾經使用過這個選擇器。我通常使用val()或html()。有什麼不同?文字就像實際的文字而不是html標籤? – chobo2

+0

'val()'僅適用於** input **元素:http://docs.jquery.com/Attributes/val html()返回/設置html,而不是文本。 'text()'轉義HTML。這裏不需要'html()',因爲沒有HTML內容。 – BalusC

+0

@ chobo2:'val'用於輸入元素,'html'返回HTML內容(標記),而'text'只返回文本內容。請查看jQuery文檔以獲取詳細信息:http://docs.jquery.com/ – Gumbo

0

當然,GT應該這樣做。查看文檔Selectors/gt

編輯:哦,你說的是元素的HTML值?你可能必須設置一個帶有過濾器或其他東西的.each循環。我會檢查這個,對不起。

+0

這將選擇通過索引,而不是內容。 – BalusC

+0

是的,只是注意到。如果可能的話,我會刪除我的帖子。 – JAL

4

您可以使用filter()函數。

E.g.

var tds = $('td.CheckThis').filter(function() { 
    return parseInt($(this).text()) > 0; 
}); 

更新:重讀的問題再一次之後,你真的想選擇包含tdtr元素的問題S和由此不僅td的。在這種情況下,請檢查Gumbo's answer作爲另一個代碼示例,這是正確的。

+0

包含parseInt的數字基數以避免意外進入八進制模式總是明智的:'parseInt($(this).text(),10)' – slebetman

+0

只有數字以'0'開頭,我不會看他的例子。 – BalusC

+0

但是這不會選擇行。 – Gumbo

0
var list = []; 
$("table").find("tr td:eq(1):not(:contains('0'))").each(function(i,val){ 
    list.push($(this).parent()); //add TR 
});