Una parte interessante di jQuery riguarda gli Internals (funzioni interne) e il Data Storage (raccolta di dati).
Questi due argomenti sono strettamente legati poiché rappresentano un sistema interno a jQuery per aggiungere e ricavare dati da un elemento aumentandone le possibili proprietà oltre i semplici attributi. Prendiamo ad esempio l'elemento seguente:
//elemento di riferimento
<div class="miaClasse" id="mioId"></div>
dell'elemento div qui sopra possiamo ricavare classe e id sui quali lavorare:
var classe = $("div").attr("class");
var id = $("div").attr("id");
Se volessi aggiungere informazioni precise, per esempio il tipo di dato che può contenere, dovremmo aggiungerlo nella classe, oppure ricorrere ad un altro attributo fra quelli permessi:
<div class="miaClasse numeri" id="mioId"></div>
<div class="miaClasse" rel="numeri" id="mioId"></div>
In ambedue i casi saremmo ben presto limitati per numero di attributi disponibili e per le righe di codice necessario a ricavare i dati di configurazione.
Una strada per aggirare il problema è l'utilizzo del plugin metadata, che permette di inserire nella stringa dell'attributo class un oggetto JavaScript ricavabile poi con un metodo specifico:
<div class="miaClasse {type:'numeri'}" id="mioId"></div>
var data = $(".miaClasse").metadata();
//data.type == 'numeri';Il problema di questo approccio è che, oltre a caricare un nuovo file JavaScript nella pagina, sporca l'HTML con testo non direttamente correlato alla rappresentazione della pagina.
Anche se spesso non c'è alternativa al problema, una soluzione più corretta sarebbe utilizzare il metodo .data():
<div class="miaClasse" id="mioId"></div>
//imposto il dato
$(".miaClasse").data("type","numeri");
var tipo = $(".miaClasse").data("type");
//tipo == 'numeri';
Da notare che se il dato non è impostato, il metodo restituisce undefined. Inoltre per rimuovere un dato basta passarne il nome al metodo .removeData():
$(".miaClasse").removeData("type");
var tipo = $(".miaClasse").data("type");
//tipo == undefined;
Come alternativa al metodo .data() è possibile utilizzare le funzioni Internals, così chiamate perché utilizzate principalmente all'interno di .data() o più in generale del framework jQuery. Per questo motivo sono utlizzate raramente dagli sviluppatori, se non durante lo sviluppo di plugin ed estensioni del framework stesso.
Queste funzioni si comportano praticamente allo stesso modo dei metodi del Data Storage, ma naturalmente necessitano di un primo argomento che rappresenti un riferimento all'elemento DOM su cui lavorare:
$(".miaClasse").data("type","numeri");
//Equivale a
$.data( $(".miaClasse").get(0), "type", "numeri");
Da notare che non è possibile passare alla funzione un oggetto jQuery, ma bisogna estrarre un elemento singolo dalla collezione. Questa regola vale anche per le altre funzioni Internals.
Rispetto al Data Storage, sono disponibili inoltre due funzionalità aggiuntive:
$.data(elemento): restituisce un numero che rappresenta un'ID univoco dell'elemento$.removeData(elemento): elimina tutti i dati associati all'elemento (usare $.removeData(elemento,nomedato) per rimuoverne solo uno)
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 |