2013-12-02 4 views
3

Как изменить цвет фона td с помощью jquery?изменить цвет фона td с jquery

мне нужно изменить столбец цвет фона один в строке два и три и четыре

мой стол:

<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?

+2

'$ ('tr: eq (1), tr: eq (2), tr: eq (3)', '.myTable'). Find ('td: first'). Css ('background', 'red') ' – adeneo

+0

Возможный дубликат [Использование jQuery, как выбрать диапазон строк?] (http://stackoverflow.com/questions/1059625/using-jquery-how-do-i-select -a-range-of-rows) – mplungjan

+0

@adeneo Отличное решение, кроме этого, не учитывает первый 'tr' в' thead', таким образом выделяя 1, 2 и 3 ячейки. Добавление 'tbody' в селектор разрешает это. '$ ('tr: eq (1), tr: eq (2), tr: eq (3)', '.myTable tbody'). Find ('td: first'). Css ('background', ' red ') ' –

ответ

0

Я бы добавил класс к интересующим вас вещам. Хорошее имя для класса было бы тем, что описывает, почему вы выделяете. Тогда вы можете просто добавить инструкцию в 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 для тр будет выглядеть следующим образом

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

Вы можете использовать п-й селектор в JQuery:

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
$('.myTable tbody tr:lt(4):gt(0)') 
     .children('td:first-child').css('background-color', 'lightblue'); 

FIDDLE

Это получает tr с индексом между 0 и 4 =>1,2,3

tr:lt(4):gt(0) 
+0

Почему не gt0: lt4? Более естественный порядок, нет? – mplungjan

+0

@mplungjan 'gt0: lt3' да, я просто иногда думаю странно – Spokey

0

Если бы использовать этот код:

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

Но, конечно, было бы легче использовать класс.

Fiddle

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> 
Смежные вопросы