Sì, è certamente possibile. L'interfaccia utente di jQuery fornisce alcune utili opzioni ed eventi per farlo.
Per i principianti, l'elemento trascinabile può sempre essere definito dalla classe .ui-draggable-dragging
durante il trascinamento.
Il metodo droppable
fornisce quindi un evento chiamato over
che eseguirà una funzione ogni volta che un oggetto trascinabile valido viene posizionato su di esso. Quindi, all'interno di quella funzione possiamo fare riferimento a .ui-draggable-dragging
e aggiungere una classe ad esso.
Out
e drop
vengono offerti anche eventi e possiamo indirizzare l'elemento trascinabile allo stesso modo. Ecco come dovrebbe apparire:
$("#droppable").droppable({
// tolerance can be set to 'fit', 'intersect', 'pointer', or 'touch'
tolerance: 'intersect',
// Add .hoverClass whenever #draggable is being hovered over #droppable
over: function(event, ui) {
$('.ui-draggable-dragging').addClass('hoverClass');
},
// Remove .hoverClass whenever #draggable is no longer hovered over #droppable
out: function(event, ui) {
$('.ui-draggable-dragging').removeClass('hoverClass');
},
// Add .dropClass whenever #draggable is dropped on #droppable
drop: function(event, ui) {
$('.ui-draggable-dragging').removeClass('hoverClass').addClass('dropClass');
}
});
Il codice di cui sopra aggiunge una classe quando #draggable
interseca con #droppable
e quindi sostituisce quella classe, quando #draggable
è sceso a #droppable
. Inoltre, .hoverClass
viene rimosso quando i due elementi non si intersecano più. Ecco uno working example on jsfiddle.
Spero che questo aiuti.
fonte
2011-08-26 16:07:51
Aggiungi la classe quando è finita, rimuovi e aggiungi nuova classe quando viene rilasciata? –
Stai utilizzando la libreria dell'interfaccia utente jQuery (con interazioni trascinabili/trascinabili)? –
Sì, utilizzo il drag and drop dell'interfaccia utente jQuery. – santa