2011-10-13 65 views
0

我面臨的拖動問題。這是小提琴。 http://jsfiddle.net/dJyUQ/16/jquery恢復拖動,如果droppable已經包含該元素

有4個盒子(A,B,C,D),都是可以放入的。 「.item」div是可拖動的,可以放在任何4個可放置的物品上。

我只需要將一個物品的一個副本放在一個droppable上。因此,當我試圖再次丟棄相同可丟棄物品的副本時,它不會允許我。目前我已插入警報。但是我想要取消或恢復拖動。

請幫助我,因爲我想我失去了一些東西。我搜索了jquery ui拖放插件,但找不到任何東西。

+0

也許保存舊的位置給一個變量?然後用該變量設置對象的位置? – Rob

回答

3

更改您的下降代碼是這樣的:

drop: function(event, ui){ 
    if($(this).children(".itemcopy").size() > 0) { 
     alert("cancel"); //Instead want to cancel dragging of item 
     return false; 
    } 
    $(this).append("<div class='itemcopy'>"+ui.draggable.html()+"</div>");   
} 

http://jsfiddle.net/dJyUQ/18/

+0

謝謝你的回答非常簡單。 – Ashwin

1

您可以使用從this blog article這一招:用revert: function(socketObj)

這裏是一個工作示例:http://jsfiddle.net/dJyUQ/16/

[編輯]理查德的答案好得多。我將在revert方法中使用函數的方式給出我的答案(但我發現這是個好主意,請閱讀文章)。

+0

謝謝你的答案非常簡單。 – Ashwin

1

變化的下降代碼以下

drop: function(event, ui){ 
       if(!($(this).children(".itemcopy").size() == 1)) { 
       $(this).append("<div class='itemcopy'>"+ui.draggable.html()+"</div>"); 
     } 
    } 
相關問題