L'ultima interazione di jQuery UI che affrontiamo è .sortable() e nasce dall'unione di più interazioni delle quali condivide molte opzioni: .draggable() e .droppable().
La caratteristica aggiuntiva del metodo rispetto alle interazioni che lo compongono è che gli elementi non vengono solo trascinati e rilasciati, ma vanno a creare un insieme ordinato ricavabile tramite un metodo specifico. In questo modo è possibile offrire all'utente un sistema intuitivo e diretto per ordinare liste di vario genere al posto di metodi più tradizionali come select e campi di testo numerici (esempio).
Come per le altre interazioni, anche .sortable() ha alcune interessanti opzioni di personalizzazione.
Anzitutto condivide opzioni presenti in .draggable(), come axis (per specificare l'asse secondo cui è possibile trascinare un elemento), delay e distance per controllare quando l'interazione fra il mouse e gli elementi deve iniziare, oppure grid per costringere gli spostamenti secondo una griglia in pixel.
Il metodo ha anche opzioni proprie, più specifiche per la personalizzazione dell'ordinamento degli elementi:
connectWith : (selettore - false)
Connette gli elementi ordinabili ad un'altra lista ordinabile, in modo che possano essere trascinati dall'una all'altra.
$('.lista').sortable({ connectWith: '.altralista' });
false)false gli elementi della lista non possono essere rilasciati in una lista collegata (con connectWith) se quest'ultima è al momento vuota.Ecco alcuni esempi di personalizzazione.
Gli eventi associati all'interazione, e ai quali possiamo collegare una funzione di callback, sono:
helper) è ancora disponibile.connectWith) riceve un elemento dalla lista corrente.Tutti gli eventi prevedono due argomenti: l'evento nativo del browser ed un oggetto ui con le seguenti proprietà:
Come per le altre interazioni, anche .sortable() supporta dei metodi generici per inizializzare o rimuovere l'interazione, oppure per cambiare alcune opzioni su un'interazione preesistente:
//Inizializza la lista con le opzioni di default
$("#lista1").sortable();
//Personalizza un'opzione specifica
$("#lista1").sortable("option","connectWith","#lista2");
Oltre a questi metodi, comuni a tutte le interazioni, .sortable() ne offre altri utili per gestire l'ordinamento degli elementi nella lista:
cancel: cancella l'ultimo cambiamento avvenuto nella lista.
È utile per permettere all'utente di tornare sui propri passi, oppure associato agli eventi stop e receive per rimediare ad eventuali ordinamenti errati:
$("#lista1").sortable({
stop : function (event,ui) {
if (ui.item.is(".bloccato")) {
// this si riferisce alla lista
$(this).sortable("cancel");
}
}
});
refresh: aggiorna gli elementi della lista, aggiungendo quelli non presenti al momento dell'inizializzazione dell'interazione (aggiunti, per esempio, con AJAX).
serialize: serializza gli id degli elementi ordinati, restituendo una stringa inviabile via AJAX o attraverso un form. La struttura degli id da assegnare agli elementi della lista segue una regola generale del tipo nomevariable_valore, quindi una lista del tipo:
<ul id="lista">
<li id="lista_1">Uno</li>
<li id="lista_3">Tre</li>
<li id="lista_2">Due</li>
</ul>
Sarà serializzata nella stringa:
"lista[]=1&lista[]=2&lista[]=3"
toArray: raccoglie gli id degli elementi nella lista e li restituisce sotto forma di array JavaScript. Riprendendo la lista dell'esempio precedente:
var lista = $("#lista").sortable("toArray");
//restituisce
// lista[0] = "lista_1"
// lista[1] = "lista_3"
// lista[2] = "lista_2"
Per quanto riguarda il metodo serialize, è possibile modificare il comportamento di default passando un secondo argomento sotto forma di oggetto JavaScript contenente una o più delle seguenti opzioni:
id (corrispondente al nome della variabile)idid (o dell'attributo specificato con attribute) con un'espressione regolare per estrarne il valore da inserire nella stringa finale.
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |