Выберите все остальные 2 строки таблицы с помощью jquery - PullRequest
5 голосов
/ 06 мая 2010

В настоящее время я использую этот код для добавления класса в каждую строку в моей таблице.

$(".stripeMe tr:even").addClass("alt");

Однако в другой таблице я хотел бы добавить класс в строки 3,4, 7,8, 11,12 и т. Д. *

Возможно ли это?

Ответы [ 4 ]

8 голосов
/ 06 мая 2010

Вам нужно сделать это так:

$(".stripeMe tr:nth-child(4n)").add(".stripeMe tr:nth-child(4n-1)").addClass("alt");​​​​​​​​
//or...
$("tr:nth-child(4n), tr:nth-child(4n-1)", ".stripeMe").addClass("alt");​​​​​​​​​​​​​​​​​

Вы можете увидеть это работает здесь .

Используя это:

$(".stripeMe tr:nth-child(4n), .stripeMe tr:nth-child(4n-1)").addClass("alt");​​​​​​​​

получает разные результаты (а именно в webkit, возможно, в других).

3 голосов
/ 06 мая 2010

С помощью селектора `: nth-child´: http://api.jquery.com/nth-child-selector/

$(".stripeMe tr:nth-child(4n), .stripeMe tr:nth-child(4n-1)").addClass("alt");
1 голос
/ 07 мая 2010

Я сделал другой подход к этой проблеме, используя цикл for и метод .eq ().

var a = 2; // start from 2 because eq() counts from 0
var b = 3; // start from 3 because eq() counts from 0
var total = $('.stripeMe td').length;

for (i = 0; i <= total; i++){
    if (i == a){
        $('.stripeMe tr:eq('+a+')').css('background', 'red');
        a+=4;
    }
    else if (i == b){
        $('.stripeMe tr:eq('+b+')').css('background', 'blue');
        b+=4;
    }
};

1004 *

1 голос
/ 06 мая 2010

Вы можете использовать функцию filter для фильтрации набора любым удобным вам способом:

$(".stripeMe tr")
.filter(function(i){ return (i % 4) >= 2; })
.addClass("alt");

Это сохранит элементы с индексами 2, 3, 6, 7, 10, 11 и так далее. Обратите внимание, что индекс основан на нуле, поэтому третья строка как индекс два.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...