2016-12-01 210 views
3

我想獲得關於以下情況的幫助。將其拖放,然後將其拖回原始位置

我有兩列,一列包含數字,另一列是通過拖放來接收它們。

左欄可拖動,右欄可放下。 我想讓右列可拖動,所以如果用戶改變了主意,他們可以將其拖放到左欄並重新開始。

$('.draggable').draggable({ 
    revert: true 
}); 

$('.droppable').droppable({ 
    drop: function(e, ui) { 
    $(this).html(ui.draggable.html()); 
    $(ui.draggable).html(''); 
    } 
}); 

The issue

請參閱的jsfiddle鏈接:Jsfiddle

+0

就使所有的div的兩個'可拖拽「和」可拖拽「。它似乎工作得很好,除非有更具體的問題。 – CollinD

+0

如果我這樣做了,在掉到右邊欄並再次拖動之後,我不能將它放回原位,也不能將它放回到原來的位置。 –

回答

2

我會讓你可以傳遞對象啓用拖放功能。通過這種方式,可以很容易地使一個拖動的項目拖動再次和它的源頭可放開等

工作實例:https://jsfiddle.net/Twisty/nuopmqnb/

jQuery的

$(function() { 
    function makeDrag($o) { 
    $o.draggable({ 
     revert: true, 
     stop: function(e, ui) { 
     if (!$(this).find("img").size()) { 
      $(this) 
      .removeClass("draggable") 
      .addClass("droppable") 
      .draggable("destroy"); 
      makeDrop($(this)); 
     } 
     } 
    }); 
    } 

    function makeDrop($o) { 
    $o.droppable({ 
     drop: function(e, ui) { 
     var $img = $("<img>", { 
      src: ui.draggable.find("img").attr("src") 
      }), 
      $target = $(e.target); 
     ui.draggable.html(""); 
     $target.html($img); 
     $target.droppable("destroy"); 
     makeDrag($target); 
     return false; 
     } 
    }); 
    } 

    makeDrag($('.draggable')); 
    makeDrop($('.droppable')); 
}); 
+0

這正是我想要達到的!謝謝你的幫助! 與此同時,我提出了另一種解決方案,但它有點bug,並且這個工作毫無疑問。 –