JavaScript  »  Guide  »  Guida jQuery 

Gestire gli eventi



La gestione degli eventi in JavaScript rappresenta un altro aspetto tanto essenziale per l'interazione utente quanto mal digerito dai browser. Proprio per questo jQuery fornisce strumenti cross-browser particolarmente avanzati per gestire gli eventi e la loro relazione con gli elementi del DOM. Una spiegazione dettagliata potrebbe risultare lunga e forse poco pratica, considerando che in generale il tipo di interazione più diffuso rimane sempre il classico click del mouse. Per iniziare vediamo un esempio:

$("a").bind("click",function (event) {
alert($(this).attr("href"));
});

Questo esempio associa ad ogni tag a un evento che farà visualizzare il valore href del link specifico.

Gestire gli eventi

Un comportamento non molto diverso dall'esempio precedente l'avremmo ottenuto scrivendo la funzione dentro l'attributo onclick del tag. Quello che jQuery da in più è la capacità di gestire in modo semplice l'evento stesso. Anzitutto è da notare che this rappresenta sempre l'elemento a cui è associato l'evento e che non sempre è quello su cui si è realmente cliccato; questo avviene perché jQuery (rispettando la gestione eventi nativa in JavaScript) tenta di risalire l'albero del documento, attivando l'evento specifico nel primo elemento trovato. Un esempio:
<a href="index.html"><strong>Testo</strong></a>

$("a").bind("click",function (event) {
alert($(this).attr("href"));
});

Quando clicchiamo sul link sopra, in realtà l'elemento su cui agiamo è il tag strong al quale tuttavia non è associato alcun evento. Quindi jQuery risale l'albero del DOM, trova l'evento che abbiamo associato al tag a e lo lancia. Questo è un modo intelligente per gestire gli elementi annidati slegandosi dal focus reale del nostro mouse.
Nel caso volessimo sapere qual'è l'elemento realmente cliccato potremo basarci sulla proprietà .target dell'oggetto event che abbiamo passato come argomento alla funzione precedente:

$("a").bind("click",function (event) {
var target = event.target;
alert(target.tagName); //il nome del tag su cui abbiamo cliccato
});

Un'altra proprietà interessante dell'oggetto event è .type, che indica sotto forma di stringa il tipo di evento che è stato lanciato. Utilizzando questa proprietà potremmo per esempio creare una funziona generica in cui, con un costrutto switch o if else, eseguire del codice in base ad eventi specifici:

function lanciaEvento (event) {
if (event.type == "click") {
alert ("Click!");
} else {
alert ("Un altro evento");
}
}

$("a").bind("click focus blur",function (event) {
lanciaEvento(event);
});

Oltre a darci la possibilità di trovare importanti informazioni sugli eventi, l'oggetto event ci permette di agire direttamente sul loro comportamento, per esempio bloccandone l'azione predefinita. Per fare un esempio: cliccando su un link l'azione predefinita del browser sarà quella di caricare la pagina indicata nell'attributo href. Per bloccare quest'azione predefinita, spesso si ricorre ad uno script del genere:

<a href="link.html" onclick="return false;">clicca qui</a>

Con jQuery diventa invece indolore utilizzare una funzione specifica di JavaScript ma non implementata in IE .preventDefault():

$("a").bind("click",function (event) {
event.preventDefault(); //blocca l'evento di default
// codice da eseguire
});

La stessa cosa può risultare utile per inviare i dati di un form con AJAX modificando il comportamento di un pulsante submit pur mantenendo la possibilità di inviare i dati normalmente nel caso JavaScript sia disattivato:

$(":submit").bind("click",function (event) {
event.preventDefault(); //blocca l'evento di default
var action = $(this).parents("form").attr("action"); //determina il valore di action
//codice AJAX qui
});

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