如何在拖放后启用拖动?

时间:2014-05-30 09:52:03

标签: jquery jquery-ui

删除拖动后我无法再次拖动。这是我的代码。

$( ".draggable" ).draggable( { revert: "invalid" } );
$( ".droppable" ).droppable( { accept: handleDrag, drop: handleDropEvent } );
function handleDrag(draggable){
   return true;
}
function handleDropEvent (event, ui) {
   ui.draggable.position({of: $(this),my: 'left top',at: 'left top'});  
}

当我在我的演示中放下红色框后再次拖动它应该回到原来的位置。如果只是拖出红色框,那么它也应该被拖动并设置为它的原始位置。

demo

1 个答案:

答案 0 :(得分:3)

您可以使用自定义可拖动revert函数,如果元素未放置在droppable上,则可以手动恢复其位置。

手动我的意思是你可以将元素orignal位置存储在jQuery数据中(例如OrDraggable),然后用它来检索元素的起始位置。

代码:

$(".draggable").draggable({
    revert: handleRevert
});

$(".draggable").data("orDraggable",$(".draggable").offset());

$(".droppable").droppable({
    drop: handleDropEvent
});

function handleRevert(e) {
    if (e === false) {
        $(this).data("uiDraggable").originalPosition = $(this).data("orDraggable");
        return true
    }
}

function handleDropEvent(event, ui) {
    ui.draggable.position({
        of: $(this),
        my: 'left top',
        at: 'left top'
    });
}

演示:http://jsfiddle.net/IrvinDominin/SQL2v/