2012-09-28 16 views
16

c'è qualche differenza tra i seguenti due metodi? è # 1 più veloce del # 2?

#1 
$('#selector').on('click',function(){ 
    $(this)... 
    // do stuff with clicked element 
}) 

and 

#2 
$('#selector').on('click',function(e){ 
    $(e.currentTarget).... 
    // do stuff with clicked element 
}) 
+1

Leggendo la documentazione (http://api.jquery.com/ event.currentTarget /) avrebbe dovuto darti la risposta. – j08691

+0

Questa segnalazione di bug è rilevante: http://bugs.jquery.com/ticket/11756. Usiamo ufficialmente "questo" dal momento che assumono che sia ciò che sta facendo il 98%. – Medorator

risposta

15

Sembra che essi sono equivalenti in molti casi, però "questo" sembra più facile da digitare

secondo http://api.jquery.com/event.currentTarget/

event.currentTarget

Questa struttura sarà tipicamente pari alla this della funzione.

Se si utilizza jQuery.proxy o un'altra forma di manipolazione portata, this sarà uguale a qualsiasi contesto che ci avete fornito, non event.currentTarget

+1

Grazie per questa risposta: volevo modificare un gestore di eventi per utilizzare una chiamata a ECMA5 .bind(), ma non riuscivo a capire come ottenere sia il contesto originale .this sia il nuovo contesto .this. –

Problemi correlati