JQuery - 复制拖放对象

时间:2012-07-16 07:35:34

标签: jquery jquery-ui jquery-ui-draggable

当我拖动我提出的项目时,将拖动克隆助手并将原始对象留在其位置,但之后不能再拖动。我需要能够将同一个对象拖动两次。我该怎么做?

$('.drag').draggable({
helper: 'clone',
snap: '.drop',
grid: [60, 60],
revert: function(droppable) {
    if (droppable === false) {
        return true;
    }
    else {
        return false;
    }
}
});

 $('.drop').droppable({
     drop: function(event, ui) {
        ui.draggable.fadeOut(1000);
     }
});

$('.drag').hover(
  function() {
    $(this).stop().animate({
    opacity: "0.8"
    });
}, function() {
    $(this).stop().animate({
        opacity: "1"
    });
});

$('.drop').droppable({
    drop: function(event, ui) {
        if (ui.draggable[10, 10].id) {
            $(this).append($(ui.helper).clone().draggable());
        }
    }
});

1 个答案:

答案 0 :(得分:3)

这是工作代码的jsfiddle:

http://jsfiddle.net/qfywP/2/

问题在于这一行:

$(this).append($(ui.helper).clone().draggable())

您应首先克隆帮助程序,将其附加到DOM,然后使其可拖动:

ui.helper.clone().appendTo($(this)).draggable()

您还应该知道您的代码包含在if语句if (ui.draggable[10, 10].id) {}中。这不是真的,所以你的代码永远不会被执行。

我还对你的代码进行了一些春季清理,因为你有一些冗余。当你只需要它一次时,$('.drop').droppable()被宣布两次。