jQuery: not () с несколькими классами в строке таблицы - PullRequest
2 голосов
/ 27 октября 2009

Так что в основном я использую jQuery для чередующихся цветов строк, выбирая все теги tr, связанные с таблицей, которые нужно раскрасить, и затем соответствующим образом окрашиваю их. Однако есть определенные моменты, когда я не хочу, чтобы определенный tr был цветным, и в этих случаях чередующаяся расцветка должна пропускать эти конкретные строки таблицы. Для этой цели у меня есть класс "rowSkip", который я применяю ко всем строкам, окраска которых должна быть пропущена.

В течение нескольких месяцев у меня была эта работа, и она приносит удовольствие ... однако всегда была одна проблема. Есть случаи, когда мне нужно применить несколько классов к строке таблицы, но я также не хочу, чтобы она была цветной. JQuery, похоже, имеет проблемы с его селектором класса в этих условиях - либо это, либо я здесь упускаю что-то простое ...

EG:

<tr class="rowSkip"> -> отлично работает.

<tr class="rowSkip strong someclass1 someclass2"> -> Не работает (по-прежнему окрашивается, несмотря на наличие класса rowSkip)

Кто-нибудь знает, почему это может быть и как я могу обойти это, если не захватить атрибут attr целиком, выполнить разбиение на пробел, а затем выполнить итерацию по нему и проверить наличие rowSkip? 1013 *

Код ниже:

$("Table.alternate tr:not(.rowSkip)").each(function() {
//if(!$(this).hasClass("rowSkip")) { //Also tried this, and several other renditions to no avail.

   $(this).addClass(i++ % 2 == 0 ? 'rowOff1' : 'rowOff2');
//}
});

Спасибо, Mark

Ответы [ 2 ]

4 голосов
/ 27 октября 2009

Попробуйте это:

$("Table.alternate tr:not('[class*=rowSkip]')").each

хорошо, если ваш класс всегда начинается с rowSkip, тогда вы можете сделать это

$("Table.alternate tr:not('[class^=rowSkip]')").each //looks for class names that starts with rowSkip
0 голосов
/ 28 октября 2009

Я бы порекомендовал вам взглянуть на сборку селектора jQuery только для этого: odd и: even. Тогда у вас есть пара способов:

$('table.alternating tr:odd td').css('background-color','#eee');

или используйте класс:

$('table.alternating tr:odd').addClass('odd');

и немного CSS:

tr.odd td { background-color: #eee }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...