Проблема здесь в том, что вы пытаетесь заставить браузер делать две вещи одновременно, которые требуют перерисовки одних и тех же вещей.
Но на самом деле вы можете достичь того, что хотите (изменить цвет строк), выполнив одно из двух действий.
Основное изменение, которое вам нужно сделать, это не иметь стиль для "не выбранных" и другой стиль для "выбранных", а вместо этого иметь один для "по умолчанию" и один для "выбранных".
Тогда вы можете использовать стиль «по умолчанию», чтобы установить стандартный цвет, и просто добавить «выбранный» стиль, чтобы переопределить его; Вам не нужно удалять стиль по умолчанию, так как выбранный будет переопределять его.
Вот простой кусочек CSS для начала:
.grid tr {
background: #FFFFFF; /*default white background*/
}
.grid tr.selected {
background: #222222;
}
... и сценарий просто сделает addClass('selected')
при его выборе и removeClass('selected')
при отмене выбора.
Действительно, класс not-selected
вообще не нужен.
Это простое изменение удалит всю половину работы, выполняемой вашей программой, когда вы переключаете выделение, и на самом деле вполне вероятно, что оно ускорит его более чем на 50% из-за того, что ему не нужно делать многократные рисует на тех же элементах.
Это, безусловно, заставит вас двигаться немного быстрее. Не вся история о том, почему ваша страница медленная, но это, безусловно, очень поможет.