2013-01-01 50 views
0

所以我可以用鼠標一個元素的舉動,但問題是偏移量從元素的左上角計算並沒有考慮到鼠標的位置的元素內造成物體跳向鼠標並防止向上或向左拖動它。jQuery的製作用鼠標元素移動

所以我想出了這個功能:

handle.on("mousemove", function(e) { 
    if (state.dragging) { 
     var paneOffset = pane.offset(); 
     var mouseOffset = { 
     'top': e.pageY - paneOffset.top, 
     'left': e.pageX - paneOffset.left 
     } 
     pane.offset({ 
     top: e.pageY - mouseOffset.top, 
     left: e.pageX - mouseOffset.left 
     }); 
    } 
    }); 

例子:http://jsfiddle.net/SEKxc/

的問題,這是它停止元件移動,因爲它總是計算元素的完全相同的偏移。我將如何使元素跟隨鼠標,但相對於鼠標與對象的位置。

我知道jQueryUI具有內置此功能,但不想使用它。

+0

爲什麼你不想使用它?和我不知道答案btw – Chanckjh

+0

是否有你不使用'jQuery Draggable'(http://jqueryui.com/draggable/)的原因?不必重新發明輪子總是很好的。或者,也許你可以參考THAT代碼來解決你的問題。除此之外,代碼的工作演示將很有用。 – Dutchie432

+0

@ Dutchie432 @ Chankjh我不想使用它,因爲它是一個大規模的應用程序,並增加了大量不必要的膨脹,我還想爲此功能添加一些額外的邏輯,例如拖動邊界.etc添加小提琴來回答。 –

回答

1

你可以計算上的dragstart初始mouseoffset,因此使用它作爲一個全局變量從鼠標移動處理程序中。由於dragstart在鼠標移動之前啓動,所以我沒有看到問題。

更新:你需要存儲兩個對象初始偏移和鼠標初始偏移和計算相對鼠標的偏移相比原來上的mouseMove然後應用相同的變換的元素。

+1

謝謝......只是爲了增加這一點,你需要存儲對象的初始偏移量和鼠標初始偏移量,並計算鼠標相對於原始鼠標的相對偏移量,然後對元素應用相同的轉換。 –

+0

是的,這就是它永遠的樣子。 –

+0

很酷,補充說,答案。 – 2013-01-01 21:38:59

0

當您開始拖動時,存儲鼠標位置和元素左上角之間的距離。然後,只需從鼠標位置中減去這些位置即可計算鼠標移動時的元素位置。

相關問題