Moje rozwiązanie jest podobne do Likwid_T, z wyjątkiem używa droppable drop
zdarzenia, jak również utrzymanie więzi między draggables i droppables zamiast droppable na out
imprezy. Myślę, że problem z używaniem out
polega na tym, że jest on uruchamiany nawet wtedy, gdy przeciągany przeciągnięty jest nad już "pełnym" droppable, a następnie "out" go.
droppable({
drop: function(event, ui) {
var $droppable = $(this);
var $draggable = ui.draggable;
// If the draggable is moved from another droppable, unlink it from the old droppable
var oldDropped = $draggable.data('dropped');
if(oldDropped) {
$draggable.data('dropped', null);
oldDropped.data('dragged', null);
}
// Link the draggable and droppable
$draggable.data('dropped', $droppable);
$droppable.data('dragged', $draggable);
},
accept: function() {
// Only accept if there is no draggable already associated
return !$(this).data('dragged');
}
});
A related cechą jest to, że jeden przeciągając jedną pozycję nad droppable że ma już przeciągać, stary dostanie wymienić i powrócić do swojej pierwotnej pozycji. Oto jak to zrobić:
droppable({
drop: function(event, ui) {
var $droppable = $(this);
var $draggable = ui.draggable;
// Reset position of any old draggable here
var oldDragged = $droppable.data('dragged');
if(oldDragged) {
// In the CSS I have transitions on top and left for .ui-draggable, so that it moves smoothly
oldDragged.css({top: 0, left: 0});
oldDragged.data('dropped', null);
}
// If the draggable is moved from another droppable, unlink it from the old droppable
var oldDropped = $draggable.data('dropped');
if(oldDropped) {
$draggable.data('dropped', null);
oldDropped.data('dragged', null);
}
// Link the draggable and droppable
$draggable.data('dropped', $droppable);
$droppable.data('dragged', $draggable);
},
});
ok, ale kiedy uwolnić tę droppable dziedzinie, jak Zrobić to ponownie można zapisać –
@Emil - Możesz użyć '" disable "' then '" enable "' później zamiast '" destroy "' jeśli musisz ponownie włączyć :) –
Zrobiłem to, ale nie wiem jak aby go włączyć. Próbowałem bez użycia: enable_Droppable, ale nie działało. Co powinienem użyć zamiast "wyjść"? –