jQuery UI可拖动和可放置的重复问题

时间:2016-03-23 14:33:15

标签: javascript jquery jquery-ui jquery-ui-draggable jquery-ui-droppable

嘿,我遇到的问题是以下jQuery Draggale / droppable UI:

JSFIDDLE

首先 awesome 文本拖到 pdfCanvas div中时,它可以正常工作。虽然在第一个之后,当你再次将 awesome 文本拖到 pdfCanvas 时,它会复制两次,而不是像第一个那样重复一次。

此外,当您尝试移动 pdfCanvas 中的真棒文本时,它会移动所有 awesome 当前在那里的文字。

JS:

$(".resize-drag").draggable({
  helper: 'clone',
  cursor: 'move',
  revert: true,
  grid: [5, 5]
});

$("#pdfCanvas").droppable({
  accept: '.resize-drag',
  drop: function(e, ui) {
    if ($(ui.draggable)[0].id != "") {
      x = ui.helper.clone();
      ui.helper.remove();
      x.draggable({
        helper: 'original',
        cursor: 'move',
        drop: function(event, ui) {
          $(ui.draggable).remove();
        }
      });

      x.appendTo('.resize-drag');
    }
  }
});

如果有人看到了并且知道如何纠正这个问题会很好!

2 个答案:

答案 0 :(得分:3)

好的,你的问题是你将新的克隆附加到resize-drag。因此,您在要克隆的对象中包含新对象。

我为你创建了一个新的JSFiddle,看它是否有效。需要稍微调整才能获得正确的位置。但我希望这能指出你正确的方向。

JSFiddle

$("#pdfCanvas").droppable({
  accept: '.resize-drag',
  drop: function(e, ui) {
    if ($(ui.draggable)[0].id != "") {
      var clone = ui.draggable.clone(false);
      clone.css('left', ui.offset.left)
           .css('top', ui.offset.top)
           .css('position', 'absolute')
           .removeClass('ui-draggable ui-draggable-dragging resize-drag')
           .addClass('dropped-element');
      $('#pdfCanvas').append(clone);
      $(clone).draggable({
        containment: 'parent'
      });
    }
  }
});

function addDraggable(){
  $(".resize-drag").draggable({
  helper: 'clone',
  cursor: 'move',
  revert: true,
  grid: [5, 5]
  });
}

addDraggable();

答案 1 :(得分:1)

检查my trial in JSFiddle。我想它会对你有帮助。

 $(".resize-drag").draggable({
  helper: 'clone',
  cursor: 'move',
  connectToSortable: "#pdfCanvas",
  revert: 'invalid',
  cursor: 'move',
  grid: [5, 5]
});

$("#pdfCanvas").sortable({
items: '.resize-drag',
connectWith: '#pdfCanvas',  

});