【问题标题】:Reset jquery draggable object to original position by clicking a button通过单击按钮将 jquery 可拖动对象重置为原始位置
【发布时间】:2013-11-14 07:06:49
【问题描述】:

我想通过单击按钮将一些可拖动对象重置为其原始位置。 我可以移动并找到当前位置。但是如何通过单击“重置”按钮来重置它们?这一切都在一个容器内。 谁能帮帮我?

查看FIDDLE

var coordinates = function(element) {
    element = $(element);
    var top = element.position().top;
    var left = element.position().left;
    $('#results').text('X: ' + left + ' ' + '   Y: ' + top);
}


$('#custombox').draggable({ containment: "#containment-wrapper", scroll: false,
            start: function() { 
                coordinates('#custombox');
                        },
         stop: function() {
                coordinates('#custombox');
                    }

        });

$('#logo').draggable({ containment: "#containment-wrapper", scroll: false,
            start: function() { 
                coordinates('#logo');
                        },
         stop: function() {
                coordinates('#logo');
                    }

        });
 $("#logo").resizable({ containment: "#containment-wrapper", scroll: false,maxHeight: 250, maxWidth: 350, minHeight: 50, minWidth: 50 });

【问题讨论】:

  • 点击重置时,您是要追溯之前的止损还是直接将位置重置为开始时的第一个位置?
  • 到第一个位置。 @Vijeta。

标签: jquery position containers draggable reset


【解决方案1】:

假设您要追溯这些步骤。

我将位置压入堆栈并在单击重置按钮时弹出并检索先前的位置。

$("#previousPos").on('click', function(){
    var pos = posStack.pop();
    $('#logo').css("left", pos.x);
    $('#logo').css("top", pos.y);
});

查看fiddle

----- 编辑---- 修复坐标问题

New fiddle

【讨论】:

  • 是的。这就是我想要的。谢谢....但是发生了一个问题。下面显示的坐标有问题。有机会解决吗?
  • 我采用了与您为坐标显示编写的代码相同的代码。如果你愿意,我可以看看它。如果解决方案对您有帮助,请将其标记为答案。
  • 这绝对有帮助。你能检查一下坐标问题吗?
  • 现在可以了吗?如果不让我知道问题。
  • 它几乎是正确的。但我一直在寻找的是当点击重置时,它必须到第一个位置,而不是最后一个(改变位置之前的状态)。这样的方式是不可能的吗?
【解决方案2】:

对于我的项目,我有 9 个元素需要回到原来的位置。我发现我不必为了重置它们而跟踪它们的原始位置。我只是将 CSS 顶部和左侧样式重置为空白值,然后将它们重置为原始位置。

function endRound() {
    $(".ball").css({"top":"", "left":""});
}

【讨论】:

    【解决方案3】:

    我所知道的可拖动项目不会跟踪它们的原始位置;仅在拖动过程中并被弹回。你可以像这样自己做:

    例如:

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

    【讨论】:

    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多