2013-02-12 69 views
0

我想更改拖动辅助器位置的位置,只是在拖动开始时,所以网格将计入到draggindg元素的新位置。jQuery可拖动的帮助器位置

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

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

这里是例子:http://jsfiddle.net/sYHre/73/

,你可以在例如蓝色元素完美贴合网看到的,但红的不是。我试图改变它的立场,但这并不奏效(注释代码),对象跳跃,我认为这是jQuery UI中的一种错误。也许有更好的方法来做到这一点?

进出口使用最新的jQuery和jQuery UI 1.9.2

回答

1

一旦您开始拖移,因为它本来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,在这种情况下,你甚至不需要网格 - 可拖动对象将始终捕捉到目标对象。)

Here's an updated fiddle显示使用snapThis is the same fiddle,但宽度变化动画,所以你可以看到如何工作。

我希望这能回答你的问题。如果不是,请尝试再次解释你到底想要达到的目标。