通过删除拖动的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