2013-05-06 17 views
5

Sono come la maggior parte degli sviluppatori web principianti nella maggior parte dei casi usano jQuery, ma più spesso ho iniziato a usare clean js. Quindi da qui la mia domanda: è vero Dio pratica da utilizzare js puliti portata jQuery, per esempio se ho bisogno di ottenere elementi di classe posso fare questo come:Qual è il modo migliore per ottenere gli attributi degli elementi?

jQuery('div#grid a').click(function(event){ 
    event.preventDefault(); 
    console.log(this.getAttribute('class')); 
    console.log(this.className); 
    console.log(jQuery(this).attr('class')); 
}); 

Ma qual è il modo migliore?

+6

Definire 'migliore'. Per quanto riguarda le prestazioni, l'accesso all''attributo 'className' direttamente è ottimale (nessuna funzione invocata, nessun oggetto creato). – raina77ow

+2

... e in questo caso, è persino ottimale nella lunghezza e leggibilità del codice. Ovviamente implica che i tuoi colleghi sviluppatori debbano sapere cosa sia 'className', l'espressione jQuery-only è più descrittiva per quelli che non lo fanno. – Bergi

+0

Esattamente. Ancora mi chiedo, vincerà 'Element.className' contro' Element.getAttribute ('classe') 'in ogni implementazione esistente.) – raina77ow

risposta

3

E 'meglio usare il this.className perché è il più veloce tra i tre. Ecco una demo che è possibile eseguire e vedere la velocità di esecuzione: jquery attr(class) vs js.className

È possibile visualizzare dopo aver eseguito il test che la proprietà className è la più veloce.

3

Sì, usare clean js in jQuery scope è una buona pratica. Perché questo è un lavoro nativo con DOM e funziona più velocemente.

Perfomance Test

+0

Nice >> !!! demo >>> – PraJen

2

C'è sempre un miglioramento delle prestazioni usando lo script nativo piuttosto che fare una chiamata alla funzione jQuery per fare la stessa cosa.

Questo guadagno tuttavia può essere impercettibile per un numero ridotto di elementi. Quindi il trade off diventa più semplice, codice più leggibile e guadagni che potrebbero non avere un grande impatto sull'interfaccia utente

Problemi correlati