Intercettare eventi jQuery su elementi DOM generati dinamicamente

Recentemente mi è capitato di implementare un bellissimo plugin jQuery per lo scrolling infinito di una pagina di elenco: scrollando la pagina fino in fondo, il plugin caricava i nuovi elementi dalla “pagina successiva” e li presentava all’utente in modo continuo, senza alcun refresh della pagina.
Molto bello davvero, peccato però che gli elementi caricati dal plugin non venissero intercettati da jQuery per eventi come click(), pur mantenendo inalterata la classe css usata come selector nel mio script.
Riassumendo: un evento del tipo

$(".myclass").click(function() {
    alert('Hello World');
});

non funziona sugli elementi generati dinamicamente e aggiunti al DOM della pagina.
La soluzione a questo problema è semplicissima, e consiste nell’utilizzo del metodo on() di jQuery:

$("#ContainerElm").on('click', '.myclass', function() {
    alert('Hello World');
});

Dove #ContainerElm è l’elemento padre degli elementi con classe .myclass scatenanti l’evento.
Nota: jQuery prevede anche un metodo live() con il quale si ottiene il medesimo behavior, ma è stato deprecato a partire dalla versione 1.7.

Posted in jQuery

Lentezza MAMP a risolvere localhost

Usi MAMP per sviluppare in locale sul tuo Mac?
Ottimo, lo uso anch’io.
Ti capita di dover aspettare svariati (interminabili) secondi perchè le richieste a localhost vengano risolte e la pagina sia effettivamente caricata?
Ottimo, capita anche a me.
Però ho risolto!
Nel mio caso il problema era legato all’utilizzo del suffisso .localhost configurato nel file httpd.conf di Apache e hosts (da terminale: sudo vi /etc/hosts).
Bene, vi vasterà cambiare il suffisso .localhost con un altro suffisso: io uso .dev.
Modificate il suffisso in entrambi i file e riavviate Apache; MAMP dovrebbe ora risolvere le richieste localhost alla velocità ottimale, e la differenza si nota parecchio!
Il tempo è denaro! Smilie: ;)

Nota: problema e soluzione riferiti a MAMP 2.01 e OS X Lion.

Posted in OS X, PHP

Android SDK (Eclipse ADT plugin): errore “SDK Platform Tools is missing”

Al momento in cui scrivo questo post l’installazione delle SDK Android e del relativo ADT plugin per Eclipse è piuttosto semplice, ma si conclude con un messaggio di errore, almeno su Mac: “SDK Platform Tools is missing”, anche seguendo alla lettera le istruzioni sul sito ufficiale

http://developer.android.com/sdk/eclipse-adt.html#installing

Il problema è comunque di facile soluzione:

  1. Da Eclipse apriamo il menu Window
  2. Selezioniamo la voce Android SDK Manager
  3. Dall’elenco dei pacchetti spuntiamo Tools -> Android SDK Platform-tools
  4. Procediamo e concludiamo l’installazione del componente mancante cliccando sul pulsante “Install N packages”

Riavviando Eclipse il problema sarà risolto.

Posted in Mobile