L'utilizzo di $("#vacations").find("li").last()
è una procedura migliore rispetto a $("#vacations li:last")
?jQuery traversal è preferibile ai selettori?
sfondo e il mio pensiero:
stavo giocando con un bel interattivo try jQuery tutorial e uno dei compiti dice:
Come siete alla ricerca attraverso il codice, si nota che qualcun altro sta selezionando la ultima vacanza con: $ ("# vacanze li: last"). Tu guardi questo e pensi "Traversal farebbe così più veloce!" Dovresti agire su quei pensieri, refactoring questo codice per trovare l'ultimo li in #vacations usando invece attraversare.
Perché dovrei pensarlo? Per me l'utilizzo di selettori sembra un livello un po 'più alto del percorso. Nella mia mente quando sto specificando un selettore, spetta a jQuery come ottenere il risultato singolo di cui ho bisogno (senza bisogno di restituire risultati intermedi).
Qual è l'overhead aggiuntivo dell'utilizzo di selettori compositi? È perché l'attuale implementazione della logica dei selettori analizza solo la stringa e utilizza l'API di attraversamento? Sta analizzando una stringa che rallenta? C'è una possibilità che un'implementazione futura userà il fatto che non ha bisogno di restituire risultati intermedi e sarà più veloce di attraversare?
Ecco un test eseguito da jspref.com per voi http://jsperf.com/is-jquery-traversal-preferred-over-selectors che potete testare facilmente ora è in diversi browser. – Peeyush
Non pubblicare una nuova risposta perché non è pertinente, ma allo sviluppatore, entrambi sono utili: è possibile effettuare una selezione iniziale con un selettore (può essere complesso) salvando il risultato su un oggetto jQuery, quindi eseguire in modo condizionale il codice A o B, e quindi su A esegui un metodo di attraversamento e su B ne esegui uno diverso. È più facile (e meno incline agli errori) che costruire una stringa in modo condizionale per selezionare l'elemento corretto. –