通過刪除拖動的div的絕對位置,您必須將其標記放置在dom中的不同位置以重新定位它。
例如,如果你拖動#divOne,使其在視覺和#divTwo之間#divThree移動你應該做的是去除#divOne的絕對定位和移動其他兩個div之間出現的標籤:
<div id="divTwo"></div>
<div id="divOne"></div>
<div id="divThree"></div>
如果你有一個明確的網格,這將工作。
如果我是你,我會做的是給我的網格中的任何div一個標準的類,我想重新安排。例如,班級「可安排」。當拖動火災時,我會使用以下公式計算我的拖動div必須放置在dom中的位置:
拖動的div應移動到dom上的其他位置。將會發生的事情是,拖動的div將取代現有的拖動div,並在其後面「推」現有的拖動div。例如,通過在#divTwo和#divThree之間拖動#divOne,#divOne代替#divThree並將其推後。假設用戶停止拖動並釋放鼠標左鍵,當拖動的div覆蓋現有div的位置將被採用(讓我們將其命名爲「delayedDiv」),那麼您所要做的就是識別推送的DIV ,從dom中取出被拖動的那個,放置在被識別的之前並使其位置相對。
爲了實現這是pushedDiv你可以使用這個程序:
//on drag end, where mouse has x and y coords:
var pushedDiv;
$(".arrangeable").each(function(index,value){
var theoffset = $(this).offset();
if(x >= theoffset .left && x <= theoffset .left + $(this).width() && y >= theoffset .top && y <= theoffset .top + $(this).height()){
pushedDiv = $(this);
}
});
// if pushedDiv is still null then the user didn't release the left click over a div of class "arrangeable". Else, the pushedDiv will be the one we are looking for
愚蠢的問題警示:爲什麼不只是保持絕對的? – aldux
因爲我將它改爲絕對定位,以便在屏幕上拖動它。我希望能夠釋放鼠標按鈕,無論我釋放它,它都會在適當的位置重新插入DOM。我已經寫了拖動腳本。我只需要回到DOM部分。 –
@SamuelReid如何讓他們在拖拽後保持絕對定位傷害任何東西? – Rooster