jQuery перетащить медленнее для большего количества элементов DIV - PullRequest
4 голосов
/ 15 июля 2009

У меня есть иерархические теги (с родительскими и дочерними отношениями) на моей странице, и они будут составлять 500 - 4500 (могут даже расти). Когда я связал перетаскиваемый и пропадающий для всех, я увидел очень плохую производительность в IE7 и IE6. Пользовательский помощник не будет двигаться плавно и очень-очень медленно. Основываясь на каком-то другом посте, я сделал, что droppable был связан / не связан с событиями mouseover и mouseout (динамически). Теперь лучше.

Но, тем не менее, я не вижу, чтобы пользовательский помощник двигался очень плавно, между курсором мыши и помощником, когда они перемещаются, возникает разрыв, и становится очень плохо, когда я захожу на сайт с удаленного компьютера.

Пожалуйста, помогите мне решить эту проблему производительности. Я полностью застрял здесь ..: (

Ответы [ 2 ]

1 голос
/ 28 сентября 2012

У меня раньше была похожая проблема (не выпадающие, но слишком много делений, влияющих на производительность). Для нас решение состояло в том, чтобы повторно использовать элементы div, когда они прокручивались за пределами экрана, поскольку у вас не будет большого количества элементов div, если у вас есть только те, которые отображаются в данный момент, плюс еще несколько для прокрутки вверх / вниз. Конечно, это было немного проще для нас, потому что он управлялся с помощью пульта дистанционного управления, который мог перемещать только один экран за раз и не должен был учитывать выбор случайных мест на полосе прокрутки, но это все еще может быть какой-то пользы для вас. Если приведенное выше объяснение недостаточно ясно, оно работает примерно так:

|  [spare divs]
| -----------------
|  [buffered divs for page-up]
| -----------------
|  [divs currently on screen]
| -----------------
|  [buffered divs for page-down]
| -----------------
|  [spare divs]
| -----------------

Теперь, когда вы прокручиваете, вы заполняете все элементы div, находящиеся сейчас на странице, данными, которые вам нужны, затем сортируете буферы, оставляя все остальные элементы div пустыми. В вашем случае вместо того, чтобы изменять данные, вы можете переключаться между режимами включения и выключения.

1 голос
/ 16 июля 2009

Постарайтесь уменьшить количество сбрасываемых предметов в любой момент. Другого пути нет.

Одна из стратегий состоит в том, чтобы объединить удаляемые цели в группы, связанные с div, и связать потомков этого div как выпадающие списки только при вводе мышью этого родительского div и отмене регистрации при отпускании мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...