하는 기능은 매우 간단하다 제거하지만, 예측할 수없는 결과를 가질 수있다. 당신이 position: relative
으로 설정된 것을 언급했듯이, 문제는 그것들이 존재하기 때문에, 객체는 새로운 부모에 상대적으로 될 것이기 때문에 떨어 뜨린 곳에서 위치를 바꿀 것입니다. 이 문제를 해결하려면 개체를 놓을 때마다 위치를 다시 계산해야합니다.
이것은 이전 부모 위치와 새 부모 위치 및 새 오프셋을 찾는 것만으로도 상당히 간단하게 수행 할 수 있습니다. http://codepen.io/anon/pen/KfDyj/ :
이 모든 기능
그렇게
$(document).ready(function() {
$("#draggable").draggable();
$(".droppable").droppable({
drop: function(event, ui) {
//Get the position before changing the DOM
var p1 = ui.draggable.parent().offset();
//Move to the new parent
$(this).append(ui.draggable);
//Get the postion after changing the DOM
var p2 = ui.draggable.parent().offset();
//Set the position relative to the change
ui.draggable.css({
top: parseInt(ui.draggable.css('top')) + (p1.top - p2.top),
left: parseInt(ui.draggable.css('left')) + (p1.left - p2.left)
});
}
});
});
체크 아웃 작업, 예를 들어이 CodePen 같이 수행 할 수 있습니다.