2013-04-24 74 views
0

一個TR內我怎樣才能改變這種狀況是有一定的風格TR內部的td單元格的顏色嗎?JQUERY選擇所有的TD細胞與某些風格

例如:

<tr style="display: table-row"> 
<td></td> 
<td></td> 
</tr> 

我已經這樣做了這麼遠,但它完全不起作用:

if ($('.mydiv').css('display') == 'table-row') { 
    $(this).siblings('td').css("background-color", "white"); 
} 
+0

我想與它的孩子()選擇器。 '$(「tr」)。children(「td」).css(「blabla」)'...... – 2013-04-24 21:22:08

回答

5

我的第一個想法,但未經檢驗的,應該是:

$('td').filter(function(){ 
    return this.parentNode.style.display == 'table-row'; 
}).css('background-color','#fff'); 

書面這將選擇所有td元素然後將其過濾到其母公司012的那些元素有style="display: table-row;";儘管如此,這確實需要tr具有在線設置的樣式。投擲多一點jQuery的,但是,你可以達到同樣的用:

$('td').filter(function(){ 
    return $(this).parent().css('display') == 'table-row'; 
}).css('background-color','#fff'); 

這會過濾以同樣的方式,但包括CSS在外部樣式表設置(或在文檔的headstyle標籤)。

我會,但是,減少DOM遍歷和僅在tr元素明確的工作,並使用給定的類名來實現相同的:

$('tr').filter(function(){ 
    return $(this).css('display') == 'table-row'; 
}).addClass('hasDisplayTableRow'); 

其中,當然,讓CSS是使用:

tr.hasDisplayTableRow td { 
    /* css */ 
} 
+0

不錯,沒有想過那樣! – Kenneth 2013-04-24 21:22:06

1

你不能做到這一點的風格,你需要一個類:

<tr style="display: table-row" class="myrow"> 
    <td></td> 
    <td></td> 
</tr> 

然後你可以在CSS樣式是:

tr.myrow td{ 
    background-color: white 
} 

或者jQuery中:

$("tr.myrow td").css({"background-color": "white"}) 

編輯大衛的回答表明,它是可能的。雖然它很聰明,但是這種方法更具可維護性。IMO

0

比較內聯樣式並不總是一個好主意。

相反,你爲什麼不把類添加到問題的tr中,以便它更清晰。

.table-row{ 
    display: table-row; 
} 

然後,你可以使用這個

if ($('.mydiv').hasClass('table-row')) { 
    $(this).siblings('td').css("background-color", "white"); 
} 

取而代之的是<tr style="display: table-row">

試着改變你的標記

<tr class="table-row"> 
0

你爲什麼不通過CSS這樣做呢?以下是我如何在JQuery中完成的。

$("tr[style='<your style value here>'] td").css("background-color", "white");