2012-06-23 81 views
0

我試圖通過jQuery給特定錶行的單元格樣式。如何通過jQuery爲tr標籤中的所有td標籤賦予樣式?

問題是,我需要逐行檢查一個屬性,如果我發現某些我期望的行之前應該重新設計當前的一個。

我用下面的代碼,而是的繪製邊境只有該行的細胞,它吸引它在表中的所有單元格:

$(".some_class_for_every_row_in_the_table").each(function() { 
    var control_variable = ... //This is the attribute 
    if (control_variable) { 
     $(previous_row).find('td').each(function() {$(this).css('border-bottom', "1px solid #AAAAAA")}); 
    } 
    previous_row = this; 
... 
}) 

這是表的HTML:

<table> 
    ... 
    <tbody> 
     <tr control_variable="..."> 
      <td>...</td> 
     </tr> 
     <tr control_variable="..."> 
      <td>...</td> 
     </tr> 
     ... 
    </tbody> 
</table> 

control_variable獲得正確的值,並且previous_row始終保持一致性。

如果我誤以爲問題的第一個版本,我很抱歉。

我的代碼有什麼問題?

+0

'$(本).find( 'TD')的CSS( '下邊框', 「1px的固體#AAAAAA」);'或'$( 「some_class_for_rows TD」)的CSS(」 border-bottom',「1px solid #AAAAAA」);' ' –

+0

@JaredFarrish謝謝,但我已經嘗試過了。同樣的結果。 –

+0

那麼,猜猜看是什麼?你即將得到一堆這樣的反應。你也需要一個完整的標記問題。 –

回答

1

喜歡的東西

$(".some_class_for_rows").each(function() { 
    $('td', this).css('border-bottom', "1px solid #AAAAAA"); 
})​; 

應工作

http://jsfiddle.net/NwWkk/

+0

這是一種新穎的方法;我認爲這可能會很慢(呃)。你可以將它凝結成一個聲明... –

+0

@JaredFarrish使用find()肯定比使用上下文慢,但最終大衛解決方案更好 –

+0

我知道,這是我在我的評論中。與OP相比,它也「不起作用」。 –

3

是否有你不能簡單地用一個原因:

$('.some_class_for_rows td').css('border-bottom','1px solid #aaa'); 

JS Fiddle demo

在你想要做什麼,因爲你已經迄今只發布一些接近僞代碼,在下面的例子中另一種猜測,我們在迭代每tr元,評估它的屬性data-controlVariable和,如果存在,添加類rowBeforeControlVariable的上一行:

$('tr').each(
    function(i){ 
     if ($(this).attr('data-controlVariable')){ 
      $('tr:eq(' + (i-1) + ')').addClass('rowBeforeControlVariable'); 
     } 
    });​ 

JS Fiddle demo

+0

OP已經說過這是試過的,並沒有工作。需要標記... –

+0

不,OP說他在他的問題中嘗試了代碼;這不是我答案中的代碼(根據鏈接的JS小提琴的作品)。 –

+0

他在我的問題下的評論? –

0

沒有看到標記很難說,但我會說你可能在表中的每一行上都有相同的類'some_class_for_rows'。

<table> 
    <tr class="some_class_for_rows"> 
    <td> 
    </td> 
    </tr> 
    <tr class="some_class_for_rows"> 
    <td> 
    </td> 
    </tr> 
</table> 

對於一個單行,你需要一些獨特的目標,如:

<table> 
    <tr class="some_class_for_rows selected"> 
    <td> 
    </td> 
    </tr> 
    <tr class="some_class_for_rows"> 
    <td> 
    </td> 
    </tr> 
</table> 

然後使用下面的代碼:

$('.some_class_for_rows.selected td').css('border-bottom','1px solid #aaa'); 
1
$("table tr[control_variable=VALUE]").prev("tr").find("td").css(... set your attribute ...); 

http://jsfiddle.net/cranio/MvVgS/1/

這個工作f或控制變量的固定值。如果它們有所不同,則應使用「.each()」。

+0

@DanielCalderonMori它適合你嗎? – Cranio

0

我不能清楚你的代碼的想法..但試試這個代碼...使用'每個'使我們有時困惑.....

如果您對所有'tr'具有相同的類名,這將有所幫助。

var len=$('.some_class_for_rows').length; 
for(i=0;i<len;i++) 
{ 
var control_variable = ... //This is the attribute 
if (control_variable) 
{ 
$('.some_class_for_rows').eq(i).prev('tr').find('td'). 
css('border-bottom', "1px solid #AAAAAA"); 
} 
}