我有可拖放區域的[2x,2]網格[[A,B] [C,D]],網格下面是1x4的可拖動網格。我只想要一些相鄰的可拖動對象。例如,如果在B中有可拖動的,並且我將一個不同的可拖動元素拖到A中,是否有辦法讓B中的可拖動元素恢復?可拖動的數據行和數據列允許我可以在需要時抓取前一列/下一列中的可拖動數據。在拖放不同的可拖動後回覆可拖動
$(".draggable").draggable({
scroll: false,
snap: ".snaptarget",
snapMode: "inner",
stack: ".draggable",
revert: function (event, ui) {
var $draggable = $(this);
$draggable.data("uiDraggable").originalPosition = {
top: 0,
left: 0
};
return !event;
}
});
$(".snaptarget").droppable({
accept: ".draggable",
drop: function (event, ui) {
var $draggable = $(ui.draggable);
var $droppable = $(this);
// This droppable is taken, so don't allow other draggables
$droppable.droppable('option', 'accept', ui.draggable);
ui.draggable.position({
my: "center",
at: "center",
of: $droppable,
using: function (pos) {
$draggable.animate(pos, "fast", "linear");
}
});
// Disable prev or next droppable if the pagewidth == 1
if ($droppable.data("col") == 1) {
$droppable.next().droppable("option", "disabled", true);
var nextDrag = $(".draggable[data-row='" + $droppable.data("row") + "'][data-col='2']");
if (nextDrag.length) {
// I need to revert nextDrag if there is one.
// I've tried this but it doesn't seem to work
nextDrag.data("uiDraggable").originalPosition = {
top: 0,
left: 0
}
}
}
},
tolerance: "pointer"
});
沒有辦法像你想象的那樣執行另一個可拖動的「還原」。您可以在「stop」或「drop」中執行檢查來檢查下一個元素。如果需要,您可以將壞格的移動動畫回到它的起點或原點。 – Twisty
@Twisty我正在調查下,但只是檢查是否有辦法。謝謝。 – homes
不通過'revert'。你在正確的軌道上。我創建了這個小提琴進行測試:https://jsfiddle.net/Twisty/a4ucb6y3/ – Twisty