Объединение: last-child с селектором: not (.class) в CSS

Можно ли выбрать последнего ребенка, у которого нет класса attr? Например:

<tr> ... </tr>
<tr> ... </tr>
<tr> ... </tr>
<tr class="table_vert_controls"> ... </tr>

В этом случае я хочу выбрать третью строку.

Я пробовал следующее, которое не срабатывало:

tr:not(.table_vert_controls):last-child

Спасибо заранее.

Ответ 1

Только с селекторами CSS, нет, поскольку :last-child специально смотрит на последнего ребенка, и нет псевдонима класса :last-of-class. См. Мой ответ на этот связанный вопрос.

По состоянию на конец 2015 года реализации начали медленно внедряться в расширение Selectors 4 на :nth-child() и :nth-last-child(), которые позволяют передавать произвольный селектор в качестве аргумента (подробнее об этом также в обновлении связанного ответа), Затем вы сможете написать следующее:

tr:nth-last-child(1 of :not(.table_vert_controls))

Несмотря на то, что реализация недавно начала поставляться, все равно потребуется по крайней мере еще несколько месяцев, если не будет другого года для поддержки этой поддержки. Тем временем вам нужно будет использовать что-то еще, например, дополнительный класс перед классом или селектор jQuery:

$('tr:not(.table_vert_controls):last')