1

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

$('.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());
        }
    }
});
4

1 回答 1

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) {}。这没有返回 true,因此您的代码永远不会被执行。

我还对您的代码进行了一些春季大扫除,因为您有一些冗余。$('.drop').droppable()被声明了两次,而你只需要一次。

于 2012-07-27T03:37:04.820 回答