Ваша проблема является Специфичность вашего CSS кода - here's a good read about it.
ссылающийся на элемент по его id (используя #), всегда будет переопределять любой стиль, заданный путем обращения к нему с его классом (используя.).
Для того, чтобы отменить предыдущий стиль, вам необходимо иметь уровень определенности, по крайней мере, тот же.
В вашем случае вы должны добавить id в селектор .nohover
, чтобы переопределить предыдущий стиль.
#product-table > tbody > tr { cursor:pointer; }
#product-table > tbody > tr:hover { background:#eee; }
#product-table.nohover > tbody > tr { cursor:default !important; }
#product-table.nohover > tbody > tr:hover { background:#fff !important; }
Это аннулирует предыдущее определение, поскольку он имеет идентификатор в нем, и класс, который один уровень выше, просто назвав его по идентификатору.
Для более «официальный» читать, обратитесь к w3.org's specification
EDIT:
Если я правильно понял, вы хотите, чтобы отключить все парит на столе, который имеет класс .nohover
.
Это можно сделать, применяя стили наведения только на таблицах, которые не имеют исключающего класса. как так:
#product-table:not(.nohover) > tbody > tr { cursor:pointer; }
#product-table:not(.nohover) > tbody > tr:hover { background:#eee; }
.green_bg { background-color:#090; }
Когда и как его нужно отключить? –
Пока мышь над tr, которая имеет класс green_bg, фон не должен меняться. –