JQuery Sortable - 将元素放入 sortable 后无法将其拖出

JQuery Sortable - Can't drag an element out of sortable once dropped inside

我需要一些使用 JQueryUI Sortables 的帮助。我想做一个文字游戏 类似于您在冰箱上看到的磁字瓷砖。我有 尝试了辅助选项 'clone''original' 甚至辅助函数。 我也试过 enabling/disabling 动态排序。我想做的是 将图块拖到中间 div,您可以将它们放在句子中 命令。我可以四处拖动方块并将它们放到游戏区的任何位置,但是 当它们被放入构建行时,它们被插入到句子中 或附加到最后。但是后来我无法将瓷砖拖出 建区。我可以在构建区域内移动它们,但我不能拖动它们 出去。我有一个显示问题的最小代码 here。我可以让所有 areas sortables,但是然后瓷砖在所有 divs 中排序,这不是什么 我需要

谁能告诉我为什么瓷砖不能拖出建筑区域 以及如何解决这个问题?我有一种感觉,它涉及重新养育 拖动图块,但我不确定该怎么做,或者是否有一些数据 我需要访问的由 JQueryUI 内部构建的结构。

你必须手动关心你的元素:

    function bind_drag(){
    $(".tile-drop span").draggable({
    containment : '.container',
    connectToSortable : '#build-area'
  });
}

function bind_sort(){
    $("#build-area").sortable({
            receive : function( event, ui ){
      ui.item.draggable()
        ui.item.draggable('disable');


     }
  });
}


$(function(){
    bind_sort();
  bind_drag();
var leftButtonDown;
$(document).mousedown(function(e){
   if(e.which === 1) leftButtonDown = true;
});
$(document).mouseup(function(e){
   if(e.which === 1) leftButtonDown = false;
});
  $(".tile-drop").droppable({
    accept : '#build-area span',
     containment: ".container",
        drop: function(ev, ui) {
       if (leftButtonDown) { return; } //for duplicates bug
       if(ui.draggable.hasClass('ui-sortable-helper')) {
          $(ui.draggable).clone(true).remove().appendTo(this);
          $(ui.draggable).remove()
          bind_drag();
          bind_sort();
        }
    }
  });

});

这是一些fiddle

另外,我想指出 droppable drop 事件目前存在一个错误,这可能会导致创建重复项:bug

编辑:更新了 fiddle 和修复重复错误的代码