【问题标题】:jQuery UI Draggable - Retain drag-ability after dropjQuery UI Draggable - 拖放后保持可拖动性
【发布时间】:2016-11-01 18:36:43
【问题描述】:

我有一个物品清单。我想将一个项目的克隆从列表中拖到一个表中——到目前为止一切都很好。

当项目被拖到表格时,我希望能够将该项目拖到表格中的不同单元格。我希望有人可以帮助解决这个问题。我到目前为止的代码如下:-

$('.drag').draggable({
      cursor:'move',     
      helper:'clone'
});

$('.dog_drop').droppable( {
      drop: handleDropEvent   
  } );

function handleDropEvent( event, ui ) {
  var draggable = ui.draggable;
  $(ui.draggable).clone().appendTo($(this)),      
  // ajax in here
}

如果您能提供任何建议,我将不胜感激。

非常感谢提前 菲尔

【问题讨论】:

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


    【解决方案1】:

    您想找到新的附加项并在其上运行 draggable() 函数。

    例如,如果 .drag 项目是一个链接,您可以执行以下操作:

    $('.drag').draggable({
      find: '.dog_drop',
      cursor:'move'
    });
    
    $('.dog_drop').droppable( {
        drop: handleDropEvent
      } );
    
    function handleDropEvent( event, ui ) {
        var $this = $(this);
        $this.append(ui.draggable);
    
        $('.dog_drop').find('div:last').draggable({
          cursor:'move'
        });  
    
      // ajax in here
    }
    

    确保选择最后一个项目,以便它可以处理多个项目。

    【讨论】:

    • Nabil,这太棒了,非常感谢您抽出宝贵时间回复。我现在遇到的问题是我想将元素实际移动到一个新单元格,而不是克隆它。当我将“克隆”更改为“原始”时,我得到了一些非常奇怪的行为。我确定这是执行 handleDropEvent 函数,但不知道如何处理它。任何进一步的帮助将不胜感激。
    • 不客气@Phill,所以您希望能够将项目从列表拖到单元格1 ...然后将相同的项目从原始列表拖到单元格2?如果这是您想要的,有两种方法可以做到这一点......您可以继续使用克隆对象并使用 revert 将项目返回到原始列表......或者您可以在列表中重新创建项目。如果这就是你要找的,我会为你更新答案。
    • 嗨,纳比尔。我想要做的是将一个项目从列表拖到单元格 1。然后将项目从单元格 1 移动到单元格 2。在这种情况下,该项目将从单元格 1 中消失并出现在单元格 2 中。
    • 更新了我的答案..我没有测试过代码,但它应该适合你。
    • 再次感谢纳比尔。恐怕这根本行不通。该项目将从列表中消失,并且不会放入 dog_drop 框中。您最初的答案是如此接近,只是我希望能够将项目从一个单元格拖到另一个单元格 - 这有意义吗?抱歉,感谢您的耐心等待。