Я хочу создать огромную таблицу, сгенерированную сервлетом Java и отправленную клиенту как ответ ajax. Мои ячейки таблицы:Производительность Jquery, создающая огромную таблицу динамически
<td style="background-color:blue;border-color:yellow;" onClick=tableClick(this)>value1</td>
<td style="background-color:red;border-color:cyan" onClick=tableClick(this)>value2</td>
Предположим, у нас есть стол с 30 рядами и 40 колонами, который составляет полностью ок. 1000 чел. Когда я отправляю эту строку из java в браузер, я буду использовать для многих сетевых ресурсов и у клиентов будет плохой способ подключения, поэтому вам нужно свести к минимуму контент, отправленный из java. Сначала я кеширую имена цветов с помощью c1: синий, c2: желтый, c3: красный, c4: голубой
На принимающей стороне устройства являются мобильными или ipad или планшетами, поэтому важна рабочая нагрузка процессора. Каков наилучший способ для производительности генерировать таблицу динамически? Как должны регистрироваться действия? Как должны быть установлены цвета?
Вариант1: Используйте JSON-обозначения, такие как
{ {'c1','c2','value1'},{'c3','c4','value2'}..
занесения большую строку, содержащую все клетки и установить в таблице только один раз с добавления.
// iterate in the json array and fetch the corresponding background color
var bgcolor = extractFromJson(row,col);
tablestring += "<td onclick=tableClick(this) style='background-color:' + bgcolor + ';border-color:' + brcolor + '>cellvalue</td>";
// once we have all the cells, then set to the table
$('#mytable').append(tablestring);
Вариант: 2 Отправить пустой шаблон для заполнения на приемнике
Java: Строка tableString; Б.Г. является атрибутом цвета фона, уш является атрибут для цветой границы
tableString += '<td bg=c1 br=c4>cellvalue</td>';
на стороне браузера, установите эту таблицу строку таблицы контейнер
$('#mytable').append(tablestring);
// register actions and set colors
$('#mytable').find('td').each(funtction() {
$(this).on('click', function() { tableClick($(this)[0]); });
$(this).style('background-color', getColor($(this).attr("bg")));
$(this).style('border-color', getColor($(this).attr("br")));
может быть стоит перекручивание через JSON и использовать '' createElement' и attr' стиль его, как вы хотите, а не создавать строку для JQuery в то читать и делайте то же самое, см. здесь http://stackoverflow.com/questions/327047/what-is-the-most-efficient-way-to-create-html-elements-using-jquery – rorypicko