jQuery :not() с несколькими классами в строке таблицы

StackOverflow https://stackoverflow.com/questions/1632774

  •  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 }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top