2013-06-25 41 views

回答

5

使用這個代替:

$('#table > tr'); // choose direct child tr nodes from table with id 'table' 

或者

$('#table > tbody > tr'); 

如果你有tbody元素。

這裏是鏈接jQuery的文檔:http://api.jquery.com/child-selector/

+1

我剛剛在IETester中測試了一個沒有'tbody'標籤的html,甚至是舊版本的IE5.5(就像所有較新的瀏覽器一樣)會自動在DOM中創建缺少的'tbody'標籤。所以第一個選擇器總是匹配零行。更多信息[here](http://stackoverflow.com/questions/938083/why-do-browsers-insert-tbody-element-into-table-elements#938143)。 – Stano

0

,如果你有一個頁面多個表,給他們班,這樣你就不必去通過這個每個其他時間..

例如

$('.mytable > tr') 

HTML

<table class="mytable"> 
    <tr> 
    <td>...</td> 
    </tr> 
</table> 
1

直觀地看,好像

$('table.top > tr'); 

就足夠了。但是,你不能保證它會。某些瀏覽器隱式插入tbody元素作爲所有tr的父項。這是HTML標準的某些版本在技術上需要的。然而,並非所有的瀏覽器都這樣做。爲了安全,你應該這樣做:

$('table.top > tr, table.top > thead > tr, table.top > tbody > tr'); 

有點冗長,但更有可能在更多情況下工作。

+0

@Stano好的。我已經添加了一個類。 – lonesomeday

+0

@Stano [但是在HTML5中不需要](http://www.w3.org/html/wg/drafts/html/master/tabular-data.html#the-table-element)。 – lonesomeday

+0

是的,它不是HTML所必需的,但它是在DOM中自動創建的。所以'$('table.top> tr');'選擇器不會找到任何直接的'tr'子元素。只是在FF和所有IE中測試過它。 **所有**瀏覽器隱式插入tbody元素。 – Stano

0

沒錯:

$('#table > tr'); 

而且,如果你正在風格的變化,請確保您先基本樣式設置爲所有的錶行(或專門針對內表)。

例如,如果您執行$("#table > tr").css("background-color", "orange");,則內部表也將變爲橙色,因爲通過CSS屬性它們會繼承它們的父級樣式。

設置基本顏色爲所有錶行第一:

tr { 
background-color: white; 
}