【问题标题】:jQuery, saving original position of multiple draggable objects to revert them backjQuery,保存多个可拖动对象的原始位置以将它们恢复
【发布时间】:2012-02-01 09:16:49
【问题描述】:

Please see the jsfiddle

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

我发现question 有点相似,但位置(左、上)在其中被硬编码以恢复。我努力了,但找不到解决办法。

谢谢。

【问题讨论】:

    标签: jquery jquery-ui jquery-plugins jquery-ui-draggable jquery-ui-droppable


    【解决方案1】:

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

    如果是这种情况,this answer 中的代码就是您要查找的内容,尽管顶部和左侧位置的值 0, 0 似乎是硬编码的,但它们是必要的,因为可拖动的 position CSS 属性在变成可拖动对象后被设置为relative,因此将它们设置回0, 0将它们移回原来的位置。

    这是jsfiddle example,也是您示例中修改后的代码:

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

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

    【讨论】:

    • 嘿,这太完美了。谢谢。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多