2009-03-08 2 views
21

Voglio essere in grado di creare una copia dell'elemento che voglio trascinare. sto usando lo standard ui draggable e droppable. Conosco l'opzione clone helper. ma ciò non crea una copia. l'oggetto trascinato viene ripristinato nella posizione originale.clone node on drag

risposta

35

Mark,

Prova questo esempio:

 $(document).ready(function(){ 
     $(".objectDrag").draggable({helper:'clone'}); 

     $("#garbageCollector").droppable({ 
      accept: ".objectDrag", 
      drop: function(event,ui){ 
        console.log("Item was Dropped"); 
        $(this).append($(ui.draggable).clone()); 
       } 
     }); 

    }); 

E l'Html assomiglia a questo

 <div class="objectDrag" 
     style="width:10%; color:white;border:black 1px solid; background-color:#00A">Drag me</div> 

    <div id="garbageCollector" style="width:100%; height:400px; background-color:#333; color:white;"> Drop items on me</div> 
+0

Scott, grazie mille per questo . Ma voglio che l'elemento clonato/lasciato sia nella stessa posizione in cui è stato rilasciato. sai come posso farlo? ho provato ad aggiungere .css (ui.position). ma non ha funzionato – mark

+0

Mark, la mia prima ipotesi sarebbe stata usare il .css (ui.position), ma se l'hai provato ... Quello che potresti provare è creare una copia temporanea dell'oggetto trascinabile alla fermata. Questo dovrebbe contenere la posizione relativa dell'oggetto. Aggiungilo al contenitore anziché all'oggetto stesso. Fammi sapere – Scott

+0

Eccellente! Pulito e semplice – NLV

2

Per ri-trascinare il clone/copia, impostare l'argomento withDataAndEvents-vero:

$(this).append($(ui.draggable).clone(*true*)); 
9

Dal momento che non sono in grado di commentare (ancora) Lascio questo come una risposta separata - nel caso in cui qualcuno, come me, troverò questa domanda:

Per la questione dal commento

" Ma voglio che l'elemento clonato/lasciato si trovi nella stessa posizione in cui è stato rilasciato. ? Sapete come posso farlo"

ho trovato soluzione in diversi SO domanda, e la risposta è di cambiare questa linea:

$(this).append($(ui.draggable).clone()); 

a

$(this).append($(ui.helper).clone()); 

(cambiamento ui.draggable a ui.helper)

speriamo vi sia utile.