JQuery UI - снижение производительности на нескольких перетаскиваемых? - PullRequest
0 голосов
/ 21 августа 2009

У меня есть вопрос относительно производительности. Есть ли снижение производительности при вызове draggable (со всеми теми же параметрами) для уже перетаскиваемых элементов?

У меня есть Речевые Пузыри, которые можно перетаскивать на контейнер для перетаскивания (скажем, комикс). Эти Пузыри также можно сбрасывать со счетов, потому что вы можете выбрать, к какому типу пузырей (говорящий, рассерженный, думающий и т. Д.) Добавить соответствующий значок. Это все работает хорошо, ожидайте для одного случая. Когда я добавляю новый Bubble, этот новый Bubble не покрывается перетаскиваемым вызовом, который я сделал в начале во время init. Что я, естественно, должен сделать, это перепривязать. Теперь наступает момент, когда я задал себе этот вопрос. Сначала отмените привязку всех пузырьков, а затем снова примените объект, который можно сбрасывать (просто вызвав функцию init для пузырьков), не принесет пользы, поскольку он теряет перетаскиваемый тег. Поэтому я спросил себя, могу ли я просто восстановить перетаскиваемый объект без потери производительности из-за двойного связывания одних и тех же функций.

Я не могу на самом деле протестировать его, потому что я работаю на 21-дюймовом iMac, который намного быстрее, чем компьютеры, на которых будет использоваться это веб-приложение (образование, например, в начальных школах), где производительность может быть проблемой.

РЕДАКТИРОВАТЬ: Фактический вопрос заключается в том, что, если я определю новый перетаскиваемый элемент для уже перетаскиваемого элемента, он будет только изменять параметры или он будет применять совершенно новый перетаскиваемый элемент и связывать его дважды? Вопрос звучит странно, но в приложении уже есть 2k + строк кода jQuery + jQueryUI с большой функциональностью перетаскивания, и я не могу использовать unbind легкомысленно.

EDIT_2: я не рассматривал функцию уничтожения jQueryUI. Можете попробовать это.

1 Ответ

1 голос
/ 21 августа 2009

Большая часть пользовательского интерфейса jQuery использует один и тот же общий формат для уничтожения привязок и выполненной настройки или изменения параметров после установки.

jQuery UI / Draggable

Уничтожение Draggable:

$("#bubble1").draggable('destroy');

Изменение параметра:

$("#bubble1").draggable('option', 'scope', 'someNewValue');

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

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

...