JQuery UI Draggable Абсолют вместо относительного? - PullRequest
18 голосов
/ 02 августа 2011

У меня есть div, содержащий несколько перетаскиваемых jquery, однако, если в какой-то момент я удаляю один из этих перетаскиваемых объектов со страницы, тогда это может переместить остальные из них, поскольку они расположены относительно.

Здесьскрипка, демонстрирующая это: http://jsfiddle.net/VolatileStorm/aNk6e/

Мое предлагаемое решение состоит в том, что перетаскиваемый объект должен использовать абсолютное, а не относительное позиционирование, однако я не могу найти способ сделать это.Есть ли способ сделать это, и если нет, кто-нибудь может придумать способ обойти это?(Ради элегантности я не приму "не удаляй другое перетаскиваемое").

Ответы [ 4 ]

17 голосов
/ 02 августа 2011

Почему position:absolute не работает для вас?

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

15 голосов
/ 16 марта 2014
  1. Добавьте position:absolute к вашим элементам.
  2. Прикрепите их к DOM до вызова .draggable.
9 голосов
/ 26 марта 2014

Вы можете установить абсолютную позицию, используя функцию jQuery css при установке элемента для перетаскивания.

$(this).draggable().css("position", "absolute");
0 голосов
/ 02 августа 2011

Возможно, не самые лучшие идеи, но ... Вы можете расположить все соответствующие элементы div, используя positon: относительный;и затем включите вызов функции в ваш или $ ("document"). ready (), если вы используете jQuery, который перебирает каждый из div-ов, чтобы перевести их относительные позиции в абсолютные и установить их как их левые, верхние передизменение их в положение: абсолют.Единственная проблема здесь заключается в том, что вы хотите, чтобы каждый элемент div занимал абсолютную позицию перед обновлением своих стилей, чтобы не изменять макет с помощью итерации.

...