2015-08-29 11 views
8

In jQuery v'è alcuna differenza tra

$('.className > button') 

e

$('.className').children('button') 

O sono questi solo sintassi alternative per ottenere la stessa cosa?

+0

, il primo utilizza il selettore CSS e il secondo utilizza la funzione jQuery. – RRK

+2

Questo è ovvio ... – BoltClock

risposta

10

Non in termini di ciò che effettivamente si finisce, ma il primo può essere scaricato interamente nella finestra del motore di selezione CSS incorporato nel browser, mentre il secondo richiede jQuery per fare più lavoro e coinvolge più creazione e pulizia di oggetti. È improbabile che importi a meno che non lo facciate con molti elementi, ad esempio un gestore mousemove, sebbene, anche se poi ...

+0

jquery sta davvero sfruttando il motore CSS dei browser? Ho sempre pensato che i selettori CSS sono analizzati da una libreria JS –

+1

@fschmengler: Se il browser fornisce 'querySelectorAll' e non usi un selettore specifico di jQuery come': eq' o ': disabled', yes, jQuery usa il motore incorporato piuttosto che proprio perché è * drammaticamente * più veloce in quel modo. jQuery torna a Sizzle solo se è necessario perché il browser non ha 'querySelectorAll' (improbabile, anche IE8 ce l'ha) o se si usa un selettore specifico di jQuery. –

+0

Sizzle, era così. Speravo che le mie informazioni fossero obsolete, grazie per l'aggiornamento! –