jQuery :not() с несколькими классами в строке таблицы
-
06-07-2019 - |
Вопрос
Итак, в основном я использую jQuery для чередования цветов строк, выбирая все теги tr, связанные с таблицей, для окрашивания, а затем соответствующим образом окрашивая их.Однако бывают определенные моменты, когда я не хочу, чтобы определенный tr был окрашен, и в этих случаях чередующаяся окраска должна пропускать эти конкретные строки таблицы.Для этой цели у меня есть класс под названием "rowSkip", который я применяю ко всем строкам, через которые следует пропустить цветизацию.
В течение нескольких месяцев у меня это работало, и это доставляло удовольствие...однако всегда существовала одна проблема.Бывают случаи, когда мне нужно применить несколько классов к строке таблицы, но я также не хочу, чтобы она была окрашена.Похоже, что в этих обстоятельствах у jQuery возникла проблема с его селектором классов - либо это, либо я здесь упускаю что-то простое...
НАПРИМЕР:
<tr class="rowSkip">
--> работает нормально.
<tr class="rowSkip strong someclass1 someclass2">
--> Не работает (по-прежнему окрашивается, несмотря на наличие класса "rowSkip")
Есть ли у кого-нибудь какие-либо идеи, почему это может быть и как я мог бы обойти это, не захватывая класс attr целиком, выполняя разделение по пробелу, а затем выполняя итерацию по нему и проверяя наличие rowSkip?
Код приведен ниже:
$("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');
//}
});
Спасибо, Марк
Решение
Попробуй это:
$("Table.alternate tr:not('[class*=rowSkip]')").each
что ж, если ваш класс всегда будет начинаться с rowSkip, то вы можете сделать это
$("Table.alternate tr:not('[class^=rowSkip]')").each //looks for class names that starts with rowSkip
Другие советы
Я бы порекомендовал вам посмотреть на сборку селектора 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 }