2013-02-06 2 views
2

У меня есть таблица с несколькими строками. Я их показываю, но по требованию. Пользователь должен выполнить действие для отображения этих строк. Каждая скрытая строка имеет class = "hideMe" с тегом TR.Альтернативные цвета строк с исключениями

Я хотел бы добавить класс к чередующимся строкам, чтобы изменить цвет, но только тем, которые всегда видны. Обычно это просто, но я не уверен, как включить исключение скрытых строк.

$('.myTable tr:odd:not(hideMe)').addClass('altRow'); 

Можно ли это сделать только с помощью CSS или мне нужно вставить некоторую магию jQuery?

+0

Итак, когда отображаются «скрытые» строки, вы не хотите, чтобы у них была полоса? – thatidiotguy

ответ

1

На самом деле, настройки просто "немного" ваш код, вы получите хорошее решение:

$('.myTable tr:not(.hideMe):odd').addClass('altRow'); 

Посмотри здесь работает: http://jsfiddle.net/HYHWJ/

Другим решением было бы:

$('.myTable tr:not(.hideMe)') 
    .removeClass('altRow') 
    .filter(':odd') 
    .addClass('altRow'); 

См. Это здесь: http://jsfiddle.net/r4N5g/

3

Вам придется прибегнуть к JavaScript:

$('.myTable tr:not(.hideMe)').each(function (i) { 
    $(this).toggleClass('altRow', !! (i % 2)); 
}); 

Вот скрипка: http://jsfiddle.net/PxT93/


Для a tiny increase in performance, вы можете использовать & побитовый оператор вместо модуля:

$('.myTable tr:not(.hideMe)').each(function (i) { 
    $(this).toggleClass('altRow', !! (i & 1)); 
}); 

Вот скрипка: http://jsfiddle.net/PxT93/1/

+0

Бросьте в другом месте, чтобы удалитьClass для строк, которые ранее были 'altRow', но больше не из-за вновь отображаемых строк. :-) –

+0

@MichaelMarr - Я предполагаю, что OP знает, как это сделать, но я добавил его к своему ответу. Для вас :) –

+0

Смотрите, не так ли ответ гораздо шире? :-) –

Смежные вопросы