jQuery拖放:cloned draggable移动原始

时间:2011-04-06 15:03:16

标签: jquery jquery-ui drag-and-drop jquery-ui-draggable

我遇到了Drag& amp;放入jQuery。在我的代码中有一个可拖动的div。当我将其移动到某个可放置的表格单元格时,div的克隆将附加到表格单元格。但是当我拖动克隆时,原来的div会被移动。这是在drop上调用的函数:

function(event, ui)
{
    var draggable = ui.draggable.clone(true);  // cloning including attrs and children
    draggable.draggable(); // this is something I tried with no effect
    $(this).empty(); // empty the droppable cell
    $(this).append(draggable); // append the div to the cell
}

我无法通过谷歌搜索找到明确的答案。我不知道它是否与此有关,但div具有相对位置(并且需要保持这种状态)。

如何确保克隆可以像原始一样拖动?

5 个答案:

答案 0 :(得分:4)

我就是这样做的,这应该可以解决问题。

 $(".draggable").draggable({ helper: 'clone' });
 $(".droppable").droppable({
    drop: function (event, ui) {
       ui.draggable.clone().appendTo($(this)).draggable();
    }
 });

我不知道你是否这样做了,但是不要在draggable上使用id-s,因为那些也将被克隆。此外,您必须在应用可拖动元素之前附加元素。

答案 1 :(得分:1)

您是否尝试将false传递给.clone()? bool代表withDataAndEvents,因此你继承了所有同样附加到旧对象的事件。

编辑:如果出于其他原因需要withDataAndEvents,你可以在进行克隆之前尝试在原始右侧使用draggable(“destroy”),然后再将其拖放?不是最优雅但它有效:http://jsfiddle.net/GheD5/

答案 2 :(得分:1)

将您的draggable初始化代码更改为包含helper: "clone"

 $("selector").draggable({
      ...
      helper: "clone",
      ...
 });

否则,您将拖动刚完成拖动操作的原始项目。

答案 3 :(得分:0)

你看过Helper Option吗?

答案 4 :(得分:0)

你能展示完整的代码吗?我现在只是猜测,但使用'delegate()'http://api.jquery.com/delegate/可能是解决方案的关键。