jquery可拖动还原不是像素完美的

jquery可拖动还原不是像素完美的,jquery,draggable,Jquery,Draggable,我正在试验jquerydraggable。当拖动然后还原时,还原并不总是将可拖动对象精确定位回其开始的位置-它可以超出几个像素 html: css 它第一次似乎起作用,但如果第二次拖动,它总是会退出,但前后不一致。有人知道如何修复吗?这是jQueryUI中已知的一个带有“还原”和“网格”的选项。在bug注释中有一个难看的解决方法,但它涉及到更改jQuery UI本身 我创建了一个更简单的解决方案: $(".formsection").draggable({ grid: [20, 20],

我正在试验jquerydraggable。当拖动然后还原时,还原并不总是将可拖动对象精确定位回其开始的位置-它可以超出几个像素

html:

css

它第一次似乎起作用,但如果第二次拖动,它总是会退出,但前后不一致。有人知道如何修复吗?

这是jQueryUI中已知的一个带有“还原”和“网格”的选项。在bug注释中有一个难看的解决方法,但它涉及到更改jQuery UI本身

我创建了一个更简单的解决方案:

$(".formsection").draggable({
    grid: [20, 20],
    zIndex: 9700,
    stop: function(event, ui) {
        this._originalPosition = this._originalPosition || ui.originalPosition;
        ui.helper.animate( this._originalPosition );
    }
});
第一次拖动可拖动对象时,它会保存原始位置,因为这是唯一正确的时间,然后使用动画方法连续拖动保存的位置,而不是使用内置的“还原”。

我是这样解决的:

$( ".formsection" ).bind( "dragstart", function(event, ui) {
    ui.originalPosition.top = $(this).position().top;
    ui.originalPosition.left = $(this).position().left;
});

此方法的优点是,您仍然可以使用Dragable(和Dropable)的内置还原功能

您知道如何使此功能以还原的方式工作:“invalid”(无效)吗?如果落在目标上,不要恢复。
.formsection{position:absolute; top:20px; left:20px; width: 220px; height: 80px; padding: 5px; float: left; margin: 0 10px 10px 0; font-size: .9em; 
             background-color:#eee; border:solid 1px green; }
$(".formsection").draggable({
    grid: [20, 20],
    zIndex: 9700,
    stop: function(event, ui) {
        this._originalPosition = this._originalPosition || ui.originalPosition;
        ui.helper.animate( this._originalPosition );
    }
});
$( ".formsection" ).bind( "dragstart", function(event, ui) {
    ui.originalPosition.top = $(this).position().top;
    ui.originalPosition.left = $(this).position().left;
});