0

请参阅 jsfiddle

一旦我将“可拖动”对象放在目标上,下次返回时将使用该特定位置。有什么方法可以保存可拖动对象的原始位置并始终将它们恢复到它们(第一个位置)?或者除了“拯救他们”之外还有其他解决方案来实现相同的目标吗?

我发现了一些类似的问题,但是位置(左,上)在其中被硬编码以恢复。我很努力,但找不到解决办法。

谢谢你。

4

2 回答 2

3

我假设当您将可拖动对象放在目标上时,您不希望它恢复,但是在将其移出目标后,您希望它与其余部分一起恢复到原始位置可拖动的?

如果是这种情况,则此答案中的代码就是您要查找的代码,尽管0, 0顶部和左侧位置的值似乎是硬编码的,但它们是必要的,因为可拖动的positionCSS 属性relative在它们被设置后被设置为变成了可拖动的,所以将它们设置回0, 0 会将它们移回原来的位置。

这是一个jsfiddle 示例,以及您示例中的修改代码:

$('#target').droppable({

    // you need to set revert to a function as the 'out' event is turning it
    // into a function...
    drop: function(event, ui){
        ui.draggable.draggable('option', 'revert', function(){return false});
    },

    out: function(event, ui){
        ui.draggable.draggable('option', 'revert', function(){
            $(this).data('draggable').originalPosition = {
                top: 0,
                left: 0
            };
            return true;
        });
    }
});

希望这可以帮助!如果我完全错过了标记,请告诉我!

于 2012-02-01T10:06:50.933 回答
0

Chris Kempen 的回答是正确的,但在较新版本的 jQuery 中,您可能想要使用

$(this).data('ui-draggable')

在“out”回调中,因为 data 属性被重命名。

于 2017-04-05T07:31:16.497 回答