j查询可拖动的帮助程序位置



我想更改可拖动辅助程序位置的位置,就在拖动开始时,因此网格将计入拖动元素的新位置。

拖动

元素会在开始时更改其宽度(开始拖动(,并且它不会"适合"网格 [100x100]。

start: function (event, ui) {
    ui.helper.css("width", '102px');
}

这是示例: http://jsfiddle.net/sYHre/73/

正如您在示例中看到的,蓝色元素完全适合网格,但红色元素则不适合。我试图即时更改它的位置,但这不起作用(注释掉代码(,对象正在跳跃,我认为这是 jquery ui 中的一种错误。也许有更好的方法可以做到这一点?

我使用最新的jQuery和jQuery UI 1.9.2

一旦你开始拖动,元素的宽度就会改变,因为它最初是类 two 的,这是width: 51px的,但是一旦你开始拖动,你的start函数就会将其更改为ui.helper.css("width", '102px')。如果您不希望其宽度更改,请删除该行 - 除了更改该项的宽度外,它不执行任何其他操作。如果您确实希望宽度更改宽度但没有"跳跃性",则可以对更改进行动画处理以使其更平滑 - ui.helper.animate({width: 102}, 500)似乎工作正常。不过,即使这有点令人迷失方向 - 我建议根本不更改宽度,除非有我没有看到这样做的原因。

该对象不适合网格,因为类 two 要求它在 left: 50% 处,这不会与您的 100 x 100 网格完美对齐。如果您希望它与网格对齐,可以通过将其更改为left: 504px来使其对齐。

另一方面,如果您希望它从left: 50%开始,但是一旦开始拖动,捕捉到最近的角落,您希望将snap: '.target'添加到选项列表中。这将迫使它捕捉到网格,即使它一开始没有与网格对齐。(事实上,如果你愿意,你可以设置snapTolerance: 100,在这种情况下,你甚至不需要网格 - 可拖动的对象将始终捕捉到目标对象。

这是一个更新的小提琴,显示了snap的使用。这是相同的小提琴,但宽度变化动画,因此您可以看到它是如何工作的。

我希望这回答了你的问题。如果没有,请尝试再次解释您要实现的目标。

最新更新