2010-11-01 11 views
6

Voglio creare un elemento personalizzato con il testo tratto dall'elemento "trascinato" utilizzando una funzione di supporto. Il mio problema è che l'interfaccia utente è indefinita, quindi non so come afferrare la fonte del trascinamento.Come personalizzare l'helper utilizzando draggable in jQuery-UI

$('.draggable').draggable({ 
    helper: function(event, ui) { 
     var foo = $('<span style="white-space:nowrap;">DRAG TEST</span>'); 
     return foo; 
    } 
}); 

risposta

16

La funzione helper si sta applicando is invoked the following way:

$(o.helper.apply(this.element[0], [event])) 

Ciò significa che this si riferisce alla .draggable si desidera all'interno di quella funzione, ad esempio:

$('.draggable').draggable({ 
    helper: function(event) { 
    return $('<span style="white-space:nowrap;"/>') 
      .text($(this).text() + " helper"); 
    } 
}); 

You can test it out here.

+0

Grazie! Ha funzionato come un fascino. Forse basta rimuovere l'evento e ui nelle chiamate di funzione, o vengono utilizzati in qualche modo? – Cros

+1

@Cros - 'event' c'è, ma sì 'ui' è estraneo, sempre' indefinito', lo rimuoverò nella risposta. –

+0

@NickCraver Ciao Nick, la tua risposta funziona alla grande. Sto cercando di restituire l'elemento originale (ma ridotto). restituire $ (this) .clone() funziona bene, ma restituire solo $ (this) non sposta l'elemento, mi chiedevo se potessi sapere perché? – JonWells