用jquery改变background-color td

时间:2013-12-02 18:52:54

标签: javascript jquery

如何用jquery改变背景颜色td?

我需要更改第二行,第三行和第四行中的背景颜色列

我的桌子:

<table class="myTable">
    <thead>
        <tr>
            <th>Col 1</th>
            <th>Col 2</th>
            <th>Col 3</th>
            <th>Col 4</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
                <tr>
            <td >td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
                <tr>
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
           <tr>
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
           <tr>
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
    </tbody>
</table>

演示:jsfiddle

如何使用jQuery?

6 个答案:

答案 0 :(得分:4)

你可以在jQuery中使用第n个选择器:

http://api.jquery.com/nth-child-selector/

$( "table tr:nth-child(2) td:nth-child(1)" ).css("background-color", "blue");
$( "table tr:nth-child(3) td:nth-child(1)" ).css("background-color", "blue");
$( "table tr:nth-child(4) td:nth-child(1)" ).css("background-color", "blue");
$( "table tr:nth-child(5) td:nth-child(1)" ).css("background-color", "blue");

jsFiddle

答案 1 :(得分:1)

$('.myTable tbody tr:lt(4):gt(0)')
         .children('td:first-child').css('background-color', 'lightblue');

FIDDLE

这会得到tr,其索引介于04 =&gt;之间1,2,3

tr:lt(4):gt(0)

答案 2 :(得分:1)

我找到了:

$('table.myTable tr:gt(1):lt(3)').find('td:first').css('background-color', 'red');

演示:jsfiddle

答案 3 :(得分:0)

我会为你关注的tds添加一个类。这个类的好名字将描述你为什么要突出显示。然后你可以在css中添加一个将处理它的语句。或者,如果您想通过jquery更改颜色,可以执行以下操作。

//Assuming highlighter is your added class name and red is the color you want to change to. 
$('td.highlighter').css('background-color', 'red');

你的html for tr看起来像这样

<tr>
  <td class='highlighter'>td1</td>
  <td>td2</td>
  <td>td3</td>
  <td>td4</td>
</tr>

答案 4 :(得分:0)

如果使用此代码:

$('.myTable tbody tr').filter(function(i){
    return {1 : true, 2 : true, 3 : true}[i];
}).children(':first-child').css('background-color', 'red');

但当然,使用课程会更容易。

Fiddle

答案 5 :(得分:0)

我不建议将jQuery用于这种样式,因为它在运行时可能会出现性能问题,如果用户禁用了JavaScript,则无法正常呈现。

我建议使用实际的CSS来完成这项任务。如果绝对有必要使用JS,那么从元素中添加和删除类可能会更好。

在下面找一个我正在谈论的例子。 http://jsfiddle.net/F7hnL/

<强> CSS

.myTable tr.highlight td:first-child {
    background-color : red;
}

<强> HTML

<table class="myTable">
    <thead>
        <tr>
            <th>Col 1</th>
            <th>Col 2</th>
            <th>Col 3</th>
            <th>Col 4</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
        <tr class="highlight">
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
        <tr class="highlight">
                <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
           <tr class="highlight">
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
           <tr>
            <td>td1</td>
              <td>td2</td>
              <td>td3</td>
              <td>td4</td>
        </tr>
    </tbody>
</table>