0

我正在尝试通过 jQuery 为特定表格行中的单元格赋予样式。

问题是我需要逐行检查一个属性,如果我发现了我期望的东西,那么当前行之前的行应该重新设置样式。

我正在使用以下代码,但不是仅为行的单元格绘制边框,而是为表中的每个单元格绘制边框:

$(".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 始终保持一致性。

如果我误导了问题的第一个版本,我很抱歉。

我的代码有什么问题?

4

5 回答 5

3

您是否有理由不简单地使用:

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

JS 小提琴演示

另一个猜测你正在尝试做什么,因为到目前为止你只发布了一些接近伪代码的东西,在下面的例子中,我们迭代每个 tr元素,评估它的属性data-controlVariable,如果存在,添加类rowBeforeControlVariable到上一行:

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

JS 小提琴演示

于 2012-06-23T15:55:34.177 回答
1
$("table tr[control_variable=VALUE]").prev("tr").find("td").css( ... set your attribute ...);

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

这适用于控制变量的固定值。如果它们有所不同,则应诉诸“ .each()”。

于 2012-06-23T16:35:19.590 回答
1

就像是

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

应该管用

http://jsfiddle.net/NwWkk/

于 2012-06-23T15:54:16.720 回答
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');
于 2012-06-23T16:02:38.973 回答
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");
}
}
于 2012-06-23T18:37:45.000 回答