2013-02-12 98 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,但寬度變化動畫,所以你可以看到如何工作。

我希望這能回答你的問題。如果不是,請嘗試再次解釋你到底想要達到的目標。