JavaScript  »  Guide  »  Guida jQuery 

Aggiungere metodi



Nella lezione sulle Utility abbiamo visto come jQuery non offra un gran numero di metodi statici (o funzioni), confidando nella capacità dello sviluppatore di utilizzare i metodi nativi JavaScript. Vi sono alcuni casi, tuttavia, in cui utilizzare JavaScript nativo potrebbe rendere ripetitivo il nostro codice. Ecco che allora è possibile aggiungere nuovi metodi statici sfruttando il fatto che se a $.extend() viene passato un solo argomento ad essere esteso è l'oggetto jQuery stesso.

Come esempio prendiamo il caso di voler realizzare una funzione per rimuovere gli spazi in eccesso da una stringa, non solo all'inizio e alla fine (come fa $.trim(), ma anche fra parola e parola. Ecco il codice necessario:

$.extend({
clean : function (stringa) {
//sostituisce le porzioni di stringa con più di uno spazio
//con un singolo spazio
var str = stringa.replace(/\s+/g, ' ');

//quindi restituisce la stringa eleminando eventuali spazi iniziali e finali
return $.trim(str);
}
});

Per applicare la nuova funzione basterà passarle la stringa da processare:

var stringa = "  stringa   piena     di  spazi";
$.clean(stringa);
//stringa = "stringa piena di spazi"

Aggiungere un metodo

L'ultima possibilità di estensione prevista nativamente da jQuery è quella di aggiungere un metodo, realizzando un cosiddetto plugin. Il codice necessario a realizzare un'estensione di questio tipo può essere molto semplice come molto complesso, in base alle funzionalità che si vogliono realizzare. In generale il punto di partenza per la creazione di un plugin è la funzione $.fn.extend(). Ecco lo schema dal quale partire:

$.fn.extend({

nomeplugin : function () {
return this.each(function () { //this è l'elemento });
}
});

Nell'esempio viene passato un oggetto a $.fn.extend contentente il metodo da aggiungere a jQuery. Al suo interno il return this... permette di restituire un riferimento all'oggetto jQuery, preservando l'eventuale concatenabilità del nuovo metodo, mentre ricorrendo a .each() si potrà ciclare fra i singoli elementi della collezione.
Da notare che se all'interno della funzione passata ad .each() verrà usato return, allora il plugin restituirà un valore, perdendo la concatenabilità.

Per chiarire questa procedura, ecco il codice necessario per realizzare un semplice plugin che imposti su giallo il colore di sfondo di tutti gli elementi della collezione:

$.fn.extend({

evidenzia : function () {
return this.each(function () {
$(this).css("backgroundColor","yellow");
});
}

});

Per richiamare il plugin basterà scrivere:

$("p").evidenzia();

Ecco il plugin in funzione.

Grazie a questo approccio possono essere realizzati plugin molto complessi in grado di gestire, per esempio, gallerie di immagini e finestre modali. jQuery offre già un buon numero di plugin da scaricare per approfondire le possibilità di estensione del framework a questo indirizzo: http://plugins.jquery.com/.

Ultimi articoli JavaScript

PhantomJS, headless browser per test con Javascript

Il tool ideale per realizzare, da terminale, operazioni in remoto su...

Creare e leggere QR Code in JavaScript

Applicazioni 'QR Code enabled' per il Web e per il mobile,...

Jquery UI Map: web-mapping con Google Maps e jQuery

Un plugin di jQuery UI per intefacciare applicaizoni Web/mobile con...

Scrollorama e Scrolldeck, slideshow d'effetto con jQuery

Plugin jQuery per ottenere Slideshow con diversi effetti di scrolling

jCanvas, un primo semplice grafico

Alla scoperta della libreria jCanvas, per semplificare il disegno e...

Altri articoli

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida Javascript: tecniche avanzate

Una guida dal taglio pratico per approfondire la programmazione a...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti