如何使div可拖放

Cod*_*der 3 javascript jquery drag-and-drop jquery-ui draggable

我项目中剩下的一件事是使两个div同时可拖动和可放置。现在我有了可以拖放的div的工作代码,但是例如,我可以将div从目标区域拖放到用户区域,但是我似乎无法找到一种方法将这些div从用户拖放并分配给其他用户用户。

$(document).ready(function(){
    $(".dragable").draggable({
        cancel: "a.ui-icon",
        revert: true,
        helper: "clone",
        cursor: "move",
        revertDuration: 0
    });

    $('.droppable').droppable({
        accept: ".dragable",
        activeClass: "ui-state-highlight",
        drop: function( event, ui ) {
            // clone item to retain in original "list"
            var $item = ui.draggable.clone();
            $(this).addClass('has-drop').append($item);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/coder880/TpbZk/31/

Ror*_*san 5

问题是因为一旦拖放项目,便将其克隆。此克隆没有draggable()实例化插件。你需要调用draggable()$item一次。尝试这个:

var draggableOptions = {
    cancel: "a.ui-icon",
    revert: true,
    helper: "clone",
    cursor: "move",
    revertDuration: 0
}

$(".dragable").draggable(draggableOptions);

$('.droppable').droppable({
    accept: ".dragable",
    activeClass: "ui-state-highlight",
    drop: function(event, ui) {
        var $item = ui.draggable.clone();
        $item.draggable(draggableOptions);
        $(this).addClass('has-drop').append($item);
    }
});
Run Code Online (Sandbox Code Playgroud)

更新的小提琴

仅当其从目标位置克隆时才应将其克隆,否则应将其移动。

为此,您需要删除helper: 'clone'克隆的可拖动元素中的选项,并在元素上保留一个标志,以确定它是全新的克隆还是之前被拖动并再次移动过。为此,您可以使用一个类,如下所示:

$(".dragable").draggable({
    cancel: "a.ui-icon",
    revert: true,
    helper: "clone",
    cursor: "move",
    revertDuration: 0
});

$('.droppable').droppable({
    accept: ".dragable",
    activeClass: "ui-state-highlight",
    drop: function(event, ui) {
        var $item = $(ui.draggable)
        if (!$item.hasClass('clone')) {
            $item = $item.clone().addClass('clone');
            $item.draggable({
                cancel: "a.ui-icon",
                revert: true,
                cursor: "move",
                revertDuration: 0
            });
        }
        $(this).addClass('has-drop').append($item);
    }
});
Run Code Online (Sandbox Code Playgroud)

小提琴的例子