Avevamo già visto in un articolo precedente come gestire gli eventi JavaScript.
jQuery semplifica ma soprattutto uniforma il motore di eventi
di JavaScript con 2 semplici metodi: bind()
per
sottoscriversi ad un evento e trigger()
per lanciarlo.
Gli eventi non sono però solo una prerogativa degli oggetti standard
DOM (Document Object Model), anche i vostri oggetti
possono lanciare eventi, persino se non hanno nulla a che fare con il
DOM.
In linea generale con jQuery ci si sottoscrive agli eventi
usando le seguente forma
$(mySelector).bind('click', function(event){...});
o la forma più contratta
$(mySelector).click(function(event){...});
Come anticipato ci si può sottoscrivere anche ad eventi personalizzati, con
$(mySelector).bind('mycustomevent', function(event){...});
che a loro volta verranno lanciati dall'oggetto personalizzato con
$(mySelector).trigger('mycustomevent');
Domanda: se volessi passare delle informazioni all'event handler al
momento del binding?
Risposta: si può passare qualsiasi informazione specificandola nell'istruzione
bind
che poi l'event handler recupererà dalla proprietà data
dell'oggetto event
.
$(mySelector).bind('mycustomevent', myCustomData, function(event)
{
...
var myData = event.data;
...
});
Altra domanda: e se volessi passare delle informazioni all'event handler
al momento del lancio dell'evento?
Risposta: si definisce semplicemente un parametro aggiuntivo nell'event handler.
$(mySelector).bind('mycustomevent', function(event, myParam){...});
...
$(mySelector).trigger('mycustomevent', 'this is the trigger-time parameter');