jQuery offre po 'di zucchero sintattico per aiutare con il vostro check - .is()
consente di convalidare un elemento contro qualsiasi altra selettore valida:
var $target = event.target;
if ($target.is('div')){
alert($target.attr('class'));
}
Ci sono alcune ulteriori modifiche da considerare:
.click(handler)
è esplicitamente assegnato agli elementi corrispondenti (ogni singolo elemento nel tuo caso). Questo aggiunge un sovraccarico; anche il gestore non si applica a nessun elemento aggiunto dinamicamente dopo il l'assegnazione del gestore viene eseguita. Invece, delegato il gestore utilizzando on()
- rifattorizziamo la logica in modo che invece di gestire ogni singolo click e la convalida di esso si potrebbe rendere applicabile solo a div in primo luogo modificando il selettore
$('div')
- si basano su
this
che è praticamente la convenzione
Dopo tutti questi cambiamenti il codice diventa più piccolo e più leggibile:
$('div').on('click', function() {
alert($(this).attr('class'));
});
fonte
2012-10-30 08:27:37
Si noti che non è necessario fare riferimento a 'event.target', ma si potrebbe anche fare riferimento a' this'. 'se (this.nodeName ==" DIV ") alert ($ (this) .attr (" classe "));' – h2ooooooo
Bene, usando $ ('*') come selettore, si usa shoud event.stopPropagation() in la funzione di callback dell'evento, solo i miei 2 centesimi. –