2012-05-22 17 views
11

Come si aggiunge un elemento trascinato a un elemento di destinazione in fase di rilascio, utilizzando i draggable/dropable di jQueryUI? Sembra che il modo in cui l'interfaccia utente di jQuery funziona ora è solo spostare gli elementi sullo schermo tramite il posizionamento assoluto. Sfortunatamente, questa funzionalità rende inutili le presentazioni dei moduli, poiché non è possibile ottenere le posizioni dei valori al momento dell'invio.Interfaccia utente JQuery - Aggiungi trascinabile a Droppable

Grazie in anticipo per qualsiasi articolo/puntatore!

+1

Nella mia esperienza, in realtà modifica il DOM per riflettere il nuovo posizionamento; Lo so perché aggiorno gli elenchi (tramite AJAX) con esso e ciò comporta la scansione del nuovo ordine div nel callback 'completato'. Cosa stai cercando di fare? – Sp4cecat

+0

Che cosa stai cercando di fare esattamente? Sembra che tu stia cercando ordinabile al posto di draggble: http://jqueryui.com/demos/sortable/ –

risposta

23

Se ho capito correttamente, vuoi che l'elemento trascinato sia staccato dal suo genitore corrente e venga aggiunto a quello nuovo, giusto? Puoi usare un helper per eseguire il trascinamento (quindi l'elemento originale non ne risente) e, una volta rilasciato, staccarlo e aggiungerlo al target (grazie a @Oleg e @Brian per migliorare la mia risposta originale).

$(myDraggable).draggable({ 
    helper:"clone", 
    containment:"document" 
}); 

$(myDroppable).droppable({ 
    drop:function(event, ui) { 
     ui.draggable.detach().appendTo($(this)); 
    } 
}); 

esempio Lavorare in jsFiddle

+0

Grazie mille per il tuo aiuto mgibsonbr! Apprezzo molto il tempo e lo sforzo che ci hai messo per scrivere questo! – user1110302

+0

Questo è molto utile, grazie –

+2

Non è necessario utilizzare alcuna variabile globale per questo - ui.helper è il tuo oggetto jq trascinabile. Puoi sbarazzarti dei metodi start/stop e al rilascio dovrebbe essere ui.helper.detach(). AppendTo ($ (this)). – Oleg

Problemi correlati