jQuery Draggables и Droppables Positioning

Я использую jQuery UI и jQuery draggable, все мои draggables используют помощника клона jQuery, и добавляет перемещаемое к сбрасываемому.

Вот мой код

 $('#squeezePage #droppable').droppable({
  tolerance: 'fit',
  accept: '#squeezeWidgets .squeezeWidget',
  drop: function(event, ui) {
   var dropElem = ui.draggable.html();

   var clone = $(dropElem).clone();

   clone.css('position', 'absolute');
   clone.css('top', ui.absolutePosition.top);
   clone.css('left', ui.absolutePosition.left);

   $(this).append(clone);

   $(this).find('.top').remove();
   $(this).find('.widgetContent').slideDown('fast');

   $(this).find('.widgetContent').draggable({
    containment: '#squeezePage #droppable',
    cursor: 'crosshair',
    grid: [20, 20],
    scroll: true,
    snap: true,
    snapMode: 'outer',
    refreshPositions: true
   });

   $(this).find('.widgetContent').resizable({
    maxWidth: 560,
    minHeight: 60,
    minWidth: 180,
    grid: 20,
   });
  }
 });

Я устанавливаю положение клона с .css('top', ui.absolutePosition.top); и css('left', ui.absolutePosition.left); но положение относительно ТЕЛА.

Положение не относительно сбрасываемого, которое делает перемещаемый спад до случайных мест. В целом, сбрасываемая и перемещаемая интеграция не тесна. Я хочу сделать это более гладким.

5
задан Spokey 25 July 2014 в 09:53
поделиться

1 ответ

Я получаю смещение body и вычитаю его из смещения клона виджета.

clone.css('top', ui.position.top - droppableOffset.top);
clone.css('left', ui.position.left - droppableOffset.left);

Это работает!

10
ответ дан 13 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

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