Search code examples
jquery-uidraggabledroppable

JQuery-UI draggable reset to original position


This is probably very easy to do, but I always think too complicated.

I've just set up a simple test with #draggable / #droppable with a fixed width/height + float:left.

I then want a reset button to be able to reset the #draggable to it's original state after it's been snapped to a #droppable. (bottom line)

$(document).ready(function() {

    $("#draggable").draggable
    ({  
        revert: 'invalid',
        snap: '#droppable',
        snapMode: 'corner',
        snapTolerance: '22'

    });
});

    $("#droppable").droppable
    ({
        accept: '#draggable', 
        drop: function(event, ui) 
        {
            $(this).find("#draggable").html();
        }
});

    $(".reset").click(function() {
    /* What do I put here to reset the #draggable to it's original position before the snap */
});

Solution

  • Draggable items don't keep track of their original position that I know of; only during drag and to be snapped back. You can just do this on your own, though:

    $("#draggable").data({
        'originalLeft': $("#draggable").css('left'),
        'origionalTop': $("#draggable").css('top')
    });
    
    $(".reset").click(function() {
        $("#draggable").css({
            'left': $("#draggable").data('originalLeft'),
            'top': $("#draggable").data('origionalTop')
        });
    });
    

    http://jsfiddle.net/ExplosionPIlls/wSLJC/