如果droppable已经包含该元素,则jquery还原拖动

时间:2011-10-13 07:19:31

标签: jquery draggable droppable

我正面临拖延问题。这是小提琴。 http://jsfiddle.net/dJyUQ/16/

有4个盒子(A,B,C,D),都是可放置的。 “.item”div是可拖动的,可以放在4个droppables中的任何一个上。

我只想在一个droppable上删除一个项目副本。因此,当我再次尝试在同一个droppable上删除项目副本时,它不允许我。目前我已插入警报。但我想取消或恢复拖动。

请帮助我,因为我觉得我错过了什么。我搜索了jquery ui拖动和放置插件但找不到任何东西。

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

您可以使用this blog article中的此技巧:使用revert: function(socketObj)

以下是一个工作示例:http://jsfiddle.net/dJyUQ/16/

[编辑]理查德的回答要好得多。我将在revert方法中使用函数留下我的答案(我发现这是一个好主意,看看文章)。

答案 2 :(得分:1)

将删除代码更改为以下

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