ドラッグ可能でもあるドロップ可能内にオブジェクトをドラッグしています。オブジェクトをドロップすると、ドロップ可能オブジェクト内にネストされます。同様に、オブジェクトをドロップ可能の外にドラッグすると、ネストされなくなります。
ただし、ドロップ可能なものを定期的にドラッグインおよびドラッグアウトすると、ドラッグ可能なものは別の位置に配置されます。
コードはhttp://jsfiddle.net/sandeepy02/kTAL3/41/にあります
オブジェクト「部屋」を作成し、「テーブル」をそこにドラッグすることで、問題を再現できます。次に「部屋」を動かすと「テーブル」も一緒に動きます。ただし、「テーブル」を部屋の外にドラッグしてから、「テーブル」をドラッグインおよびドラッグアウトすると、突然再配置されます。
EDIT ドラッグしたアイテムをドロップ可能に追加するために使用しているコードを明確にするために、次のようにします。
.droppable({
drop: function(event, ui) {
$(this).append(ui.draggable);
},
out: function(event, ui) {
$("#boundaryContainer").append(ui.draggable);
}
ドロップインとドロップアウトの前にドラッグ可能な位置を保存するさまざまな方法を試しましたが、うまくいきませんでした。方法は次のとおりです。 方法 1:
.droppable({
drop: function(event, ui) {
var position = ui.draggable.offset();
ui.draggable.appendTo($(this)).css(position);
},
out: function(event, ui) {
var position = ui.draggable.offset();
ui.draggable.appendTo("#boundaryContainer").css(position);
}
方法 2:
.droppable({
drop: function(event, ui) {
var tempLeft= ui.draggable.position().left;
var tempRight= ui.draggable.position().right;
$(this).append(ui.draggable);
ui.draggable.position().left = tempLeft;
ui.draggable.position().right= tempRight;
},
out: function(event, ui) {
var tempLeft= ui.draggable.position().left;
var tempRight= ui.draggable.position().right;
$("#boundaryContainer").append(ui.draggable);
ui.draggable.position().left = tempLeft;
ui.draggable.position().right= tempRight;
}
方法 3 :(