2012-06-23 54 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"); 
} 
}