@Extramezz

Самый оптимальный вариант добавить в DOM 50+ блоков?

Получаю AJAX-ом данные. Из них формирую новые DOM-элементы. В общем, получается у меня 50+ элементов с текстом, картинками и прочим. Добавляю в DOM разом, через $.append:

var elems = [elem, elem, elem...];
$("#dump").append(elems);


Но все это дело до жути затормаживает браузер, как этого избежать? Добавлять по одному? Перевести в HTML и добавить через $.html? Использовать documentFragment или...? Какой наиболее верный и шустрый способ?
  • Вопрос задан
  • 462 просмотра
Решения вопроса 2
Для перевода в html вам всё-равно придётся добавлять все элементы в один контейнер, чтобы брать его innerHTML. То есть вы будете делать ту же самую вставку, разве что в памяти, плюс вставка уже самого текста в dom, из которого потом браузер по новой будет создавать объектное представление элементов. Слишком много мусора получается.

Как вариант решения, можно саму вставку проводить нативными средствами. jsfiddle.net/bpd7b1dx тут наглядно видна разница в скорости.

Насчёт documentFragment'а сказать ничего не могу, читал лишь, что в современных браузерах он особой пользы не несёт, но в таком же тесте на 1000 элементов был прирост на ~20% в сравнении с обычной нативной вставкой.
Ответ написан
Попробуйте использовать DocumentFragments, это должно заметно снизить нагрузку на браузер.

www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#...
ejohn.org/blog/dom-documentfragments
javascript.ru/optimize/documentfragment-0

и пример с jquery:
jsfiddle.net/hc5ED/6
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы