jQuery Draggables和Droppables的位置

问题描述 投票:5回答:1

我正在使用jquery UI和jQuery draggable,我的所有可拖动对象都使用jquery clone助手,并将draggable追加到droppable

这是我的代码

 $('#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);设置克隆的位置,但该位置相对于BODY。

位置不是相对于可放置对象的位置,这使得可放置对象的放置位置随机。总体而言,可拖放式集成并不紧密。我想使其更平滑。

jquery jquery-ui jquery-ui-droppable jquery-draggable
1个回答
10
投票

我正在获取主体的偏移量,并从小部件克隆的偏移量中减去它。

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

有效!

© www.soinside.com 2019 - 2024. All rights reserved.