Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
Добрый вечер всем. Подскажите по такому вопросу: как ускорить работу с таблицей? На клиентской стороне формируется таблица размером около 2 000 строк. Далее выборочно отмечаются значения с помощью checkbox в графах и функция each (для каждого чекбокса если он выбран (обращение к DOM элементу через $(this)) делай ....) выполняет редактирование выбранных полей. Но это неимоверно долго. Можно как то ускорить? Слышал про quickEach, в нем вроде как быстрей. Что это и где брать? Может есть другие идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2016, 16:51 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
есть идея посмотреть на код, а не на рассказы о нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2016, 17:48 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
com.етаНа клиентской стороне формируется таблица размером около 2 000 строк.Это небольшая таблица. У меня 5-12 тыс. записей и пока без тормозов Как правильно заметил Antonariy , надо показать код. з.ы. На сервере формирую таблицу вида Код: html 1. 2. без закрывающих тегов <tr> и <td> . Это разрешено стандартом и хорошо уменьшается HTML, который идет клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2016, 19:14 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
com.ета, Вообще-то надо смотреть что за страница, но скорее всего тормозит рендеринг. Одно дело, только открыть большую таблицу. Другое дело, в динамике менять большой объём HTML-содержимого. Третье дело, не только менять содержимое, но и часто перечитывать при этом текущие размеры (стили) - это наибольшие тормоза при отображении и отзывчивости страницы (перечитывание стилей может происходить неявно, в используемых сторонних библиотеках, тут вы только можете почитать документацию и посмотреть их код). Попробуйте во время изменений содержимого скрывать всю таблицу (например у родительского блока менять стиль display:none/block) Если не поможет или всплывут другие проблемы, попробуйте visibility:visible/hidden ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2016, 11:41 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
user89, Вот смотрите как дело обстоит. У меня есть перечень с checkbox и над ним есть так скажем главный checkbox Например в таблице в 1000 записей в каждой строке есть checkbox, который может быть отмечен или нет. Если отмечен, то мне надо сделать действие, а именно поменять текст в ячейках и цвет. Для этого на основной checkbox поставил скрипт, выполняющий следующее: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Собственно как-то так... change_func как раз и занимается редактированием элементов через входные параметры обращаясь к ячейкам строки. Ячейки имеют id равное параметру id элемента $(this) + порядковый номер с нуля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2016, 20:39 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
налицо классическое применение JQuery без применения головного мозга. нафига простое this.checked = true; оборачивать длинной соплей из внутрижквериевских вызовов? да еще по три раза на каждую итерацию each. даже так будет выигрыш: var $th = $(this) if($th.prop("checked") $th.prop("checked",true) change_func($th кстати, что за prop, когда всю жизнь было attr? я понимаю, если бы с чекбоксом проделывали пяток операций, гоняя его по dom, но тут всего одна - проверка checked. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2016, 21:22 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
com.ета, когда чекбокс выбран, присвой строке класс(любой), потом можно этому классу сделать дисплей none, и у тебя будут только выбранные строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2016, 22:01 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
Antonariy, как вы посоветовали я уже делал, особого прироста это не дало. На пару секунд стало быстрее, но итог один. Согласен с Вами, что оптимальней делать как Вы написали, я уже это поправил, но это к сожалению общей картины не меняет. При обработке 2 000 записей виснет браузер секунд на 15. Это не приемлемо. Есть вариант что я некорректно заношу новые строки в таблицу и вследствие этого идет их некорректная обработка... Функция change_func связана с удалением и добавлением div и tr элементов. Может быть косяк кроется там.... Завтра погляжу код, сейчас на память не помню уже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2016, 22:32 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
Antonariy, забыл про .prop написать Вам: The difference between attributes and properties can be important in specific situations. Before jQuery 1.6, the .attr() method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior. As of jQuery 1.6, the .prop() method provides a way to explicitly retrieve property values, while .attr() retrieves attributes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2016, 22:42 |
|
||
|
Быстродействие JQuery (selector).each()
|
|||
|---|---|---|---|
|
#18+
читать про вставку https://learn.javascript.ru/modifying-document ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 09:36 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39243031&tid=1445233]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 540ms |

| 0 / 0 |
