【问题标题】:dragging clone element ( ui.draggable.clone() ) drags the original element (jquery)拖动克隆元素( ui.draggable.clone() )拖动原始元素(jquery)
【发布时间】:2013-01-29 10:56:21
【问题描述】:

我有两列带有可拖动的 li 元素。当我将元素从一列拖动到另一列时,我需要克隆拖动的元素并将其附加到新列(我希望元素也保留在前一列中)。

     ls.droppable({      // ls refers to the column containing draggable elements
         greedy:true,
         hoverClass: 'drop-hover',
         over: function (e, u) {

         },
         drop: function (e, u) {

             afterDrop(u, $(this));
         }
   });

afterDrop 函数是

      window.afterDrop = function (u, ls) {
      var c = u.draggable.clone(true, true);
      var d = jQuery('.onestrip', ls);
      d.append(c);
      }

现在,当我在另一列中拖动新添加的元素时,前一列中的旧元素被拖动。如何将单独的可拖动元素附加到被拖动的元素(我尝试禁用然后再次附加可拖动元素,但仍然相同)

编辑: 我也遇到过类似的情况,看看这个链接http://jsbin.com/aseqid/4/edit .... 尝试将红色框拖放到绿色框中。然后再次尝试拖动先前放置的红色框...拖动事件未附加到放置的红色框...我已尝试将事件附加到放置的框,但它仍然引用原始红色框

【问题讨论】:

  • 你试过使用 helper:'clone' ???
  • 我试过了,但没有用..我认为一旦我们放下助手就会被破坏..克隆它也没有为我提供解决方案
  • 你能提供一个js小提琴吗? M 不确定我是否理解您的问题
  • jsbin.com/aseqid/4/edit将红色方块拖入绿色方块,再次尝试拖拽之前拖过的方块......

标签: jquery jquery-ui draggable jquery-ui-draggable jquery-draggable


【解决方案1】:

这是您要寻找的行为吗?

已将“ID”测试更改为“类”并进行了一些调整

我已经更新了你的代码

http://jsbin.com/aseqid/10/edit

【讨论】:

  • 在我的原始代码中,所有的可拖动对象都是按类选择的。我知道克隆带有 id 的元素将不稳定..但这仍然不能解决我的问题..附加的事件不是克隆,如果我们使用 clone(true,true) 则它不起作用..无论如何感谢您抽出宝贵时间回复
【解决方案2】:

我相信它的行为是这样的,因为您正在使用可拖动的数据和事件克隆新的附加元素。

尝试使用clone() 而不是clone(true, true),并在新元素上初始化所需的数据和事件,而不是全部克隆。

http://jsbin.com/aseqid/8/edit

drop:function(e,u){
    var a=u.draggable.clone();
    a.removeAttr('id'); // Remove the id attribute, no dup 'id'
    initialize(a);      // Create an initialize function, or do it in here
    console.log(e.target)
    $(this).append(a);
}

【讨论】:

  • 恐怕很多事件都附加到了之前功能大的元素上……我还在想办法,但是如果没有任何效果,我就只能这样了。 ..感谢您的回复