В приложении, которое я пишу, в котором используется большая таблица чисел HTML, дизайн требует, чтобы строка и столбец выделенной ячейки были выделены.
Я разрабатываю все JS для этого проекта, используя jQuery 1.3.x, и нашел плагин tableHover , который делает именно то, что мне нужно.
Но:
в IE6 производительность этого плагина падает по мере того, как количество элементов ячейки возрастает до точки, когда страница почти не отвечает.
Я подумал, что проблема заключается в плагине, и я фактически переписал всю его функциональность с нуля, просто чтобы обнаружить, что у меня такие же проблемы с производительностью.
После отладки кода теперь я знаю, что выбор большого количества элементов плюс применение className ( jQuery.addClass () ) в IE6 выполняется очень медленно.
Я пытался использовать jQuery.css () вместо этого только с background-color , производительность улучшается, но опять же, когда число ячеек таблицы возрастает, производительность падает до в непригодном для использования состоянии, и во всех других браузерах производительность jQuery.css () намного ниже, чем jQuery.addClass () .
Основная проблема здесь заключается в том, что нет общего родителя столбца таблицы, поэтому для того, чтобы оформить столбец, необходимо пройти по всей таблице, выбрать каждую строку и затем найти правильный nth-child тд . мой код jQuery для этого выглядит так:
//col_num is the current td element
//table is the parent table
var col_num = cur_cell.prevAll().length + 1;
var this_col = $('tr td:nth-child(' + col_num + ')', table);
Я не буду вставлять сюда весь свой код, потому что он не имеет отношения к проблеме.
Единственный ответ, который я ищу: есть ли известный способ сделать то, что мне нужно, с лучшей производительностью? Я не ищу быстродействия Chrome, просто что-то быстрее, чем «не реагирует».
Thnaks
Том.