0

我在 jQuery 中的拖放有问题。在我的代码中有一个可拖动的 div。当我将它移动到某个可放置的表格单元格时,该 div 的克隆将附加到表格单元格中。但是当我拖动克隆时,原来的 div 被移动了。这是放置时调用的函数:

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 有一个相对位置(并且需要保持这种状态)。

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

4

5 回答 5

4

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

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

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

于 2011-04-06T16:03:34.890 回答
1

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

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

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

于 2011-04-06T15:21:09.787 回答
1

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

编辑:如果您出于其他原因需要 withDataAndEvents ,您可以在克隆之前尝试在原始文件上使用 draggable("destroy") ,然后在之后再次使其可拖动?不是最优雅的,但它有效:http: //jsfiddle.net/GheD5/

于 2011-04-06T15:15:06.130 回答
0

你看过Helper Option吗?

于 2011-04-06T15:13:31.603 回答
0

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

于 2011-04-06T15:18:07.130 回答