Как управлять элементами DOM

Я реализовал бесконечную прокрутку (т.е. загрузка записей, когда полоса прокрутки достигает нижней части div). Он работает нормально, но после загрузки слишком большого количества записей на странице, страница становится слишком тяжелой & amp; вызывает медленный рендеринг. На самом деле, я использую эту технику в качестве замены gridview, так как мне управлять тяжелым DOM в этом сценарии?

 binarious05 апр. 2012 г., 02:52
Может быть, делать эту технику с обеих сторон, прокручивая вверх и вниз? Когда вы достигли 100 пунктов после прокрутки вниз, удалите или скройте верхние 50. Вы перезагружаете или показываете их снова, когда прокручиваете вверх.
 Tuscan05 апр. 2012 г., 02:55
@ Aristos Нет, все мои элементы управления только для чтения. нет событий
 Bakudan16 апр. 2012 г., 09:22
Основываясь на бинарных комментариях, если вы открыты для HTML5, вы можете удалить элементы из DOM и переместить их в локальное хранилище для дальнейшего использования. Если данные часто меняются, удалите их из хранилища, когда посетитель покидает страницу.
 Tuscan05 апр. 2012 г., 02:56
@binarious: можете ли вы дать мне простую идею, как добиться этого внутри div. мне нужно будет поддерживать высоту полосы прокрутки тоже. Thanx
 Aristos05 апр. 2012 г., 02:45
у вас есть на каждом элементе дополнительный JavaScript на событиях?

Ответы на вопрос(2)

Может быть, делать эту технику с обеих сторон, прокручивая вверх и вниз? Когда вы достигли 100 пунктов после прокрутки вниз, удалите верхние 50. Вы перезагружаете или показываете их снова, когда прокручиваете вверх.

Идея как этого добиться:

$('.entry:lt(50)').remove(); // remove the top 50 .entry elements

$('.entry:lt(' + (current_entries - 50) + ')').remove();

Перезагрузите их на стороне сервера при прокрутке до верхней части div. Надеюсь, это поможет.

 Tuscan05 апр. 2012 г., 03:08
Будет ли сокрытие уменьшать нагрузку DOM?
 05 апр. 2012 г., 03:12
 05 апр. 2012 г., 03:02
Я думаю, что вы должны удалить их, а не скрывать их.
 05 апр. 2012 г., 03:03
Что ж, тогда вам нужно изменить скрипт загрузки, чтобы он запускался, когда полоса прокрутки находится вверху, а затем загрузить конкретные результаты.
 05 апр. 2012 г., 03:32
Это будет только "чувствовать себя быстрее" если количество элементов DOM не так много и сложно, потому что скрытые элементы уже существуют, поэтому показывать их «быстро» ... но если бы это было так, я не думаю, что Тоскан спросит, как управлять DOM. Сокрытие элементов - это не управление DOM.
Решение Вопроса
Reduce the DOM elements to minimum. Minimize the number of wrappers. Minimize the acces to the DOM elements, which includes ( yahoo suggestions ): Cache references to accessed elements Update nodes "offline" and then add them to the tree Avoid fixing layout with JavaScript If there is any computation which can be reduced, like getting the number of rows ( don't calculate it everytime, just add the number of the new rows to the current ), cache it ( memoization wikipedia )

Если у вас есть какой-либо тип итерации над коллекцией элементов DOM, и вы не используете jQuery для итерации, используйте это (предложенияШаблоны JavaScript):

for (var iteration = 0, limit = lengthOfElements; iteration++; iteration < limit)

или же

for (var i = myarray.length; i--; )

Ваш ответ на вопрос