Quali sono le cattive/peggiori pratiche JQuery che hai visto, scritto o cosa dovrebbe essere evitato?Jquery Cattive pratiche
risposta
Una cosa che dovresti evitare è usare i selettori "facili da usare" in ogni riga ancora una volta, perché l'implementazione JavaScript dei selettori non è che efficiente. Certo, i ragazzi di jQuery lo stanno ottimizzando, comunque penso che dovresti usarlo il meno possibile.
Quindi, questa è una cattiva pratica.
$("li ul span").show();
$("li ul span").toggleClass("bubu");
concatenamento è buono
$("li ul span").show().toggleClass("bubu");
E ricordare le cose in una variabile locale è anche non è male:
var allspans = $("li ul span");
allspans.show();
allspans.toggleClass("bubu");
Sì, così tante persone fanno questo. È così male per le prestazioni. – jerone
+1 per indicare il concatenamento e le variabili locali! –
ancora utilizzando il vecchio documento funzione di pronto:
$("document").ready(function(){ });
Invece di molto com mon:
$(function(){ });
Non è molto male, ma mostro che la gente non si alza con le nuove API.
L'uso di '$ (document) .ready (...)' è spesso usato per rendere il codice esplicitamente chiaro. Ovviamente non è necessario, ma è difficilmente una cattiva pratica IMO. –
Questo è quello che ho detto. :) – jerone
puoi spiegare, perché dovrei farlo?Penso che la prima versione abbia più senso: stiamo allegando un gestore di eventi all'oggetto DOCUMENT. L'altro .. anche se forse funziona meglio .. non si spiega da solo. – naivists
Ci sono due che vedo un sacco:
primo, in un evento click, il id
si accede in questo modo:
$("a").click(function(e){
var id = $(this).attr('id');
});
che crea un nuovo jQuery oggetto intorno al DOM nodo, e chiama una funzione. Quanto segue è il modo corretto:
$("a").click(function(e){
var id = this.id;
});
Nota: Questo si vedrà anche $(this).attr('href')
, ma che è corretto a causa del modo jQuery normalizza tutti i browser.
Il secondo sta passando nulla, tranne un nodo DOM nel parametro scope
della chiamata jQuery:
$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();
non c'è guadagno di velocità a tutti in questo modo. Dove si fa vedere un aumento di velocità, è quando si dispone già l'elemento DOM:
$('div').click(function(){
$('img', this).doSomething(); // This is good
});
James Padolsey ha scritto an excellent article sul codice jQuery odori. Consiglio di leggerlo.
questo è un bell'articolo – Anurag
- 1. Database Upserts - Buone o cattive pratiche?
- 2. Operatore ternario: cattive o buone pratiche?
- 3. Iniezione delle dipendenze e altri parametri del costruttore: cattive pratiche?
- 4. Utilizzo di tutti i thread disponibili cattive pratiche?
- 5. Perché le variabili globali sono considerate cattive pratiche?
- 6. Buone pratiche o cattive pratiche per forzare l'intero sito su HTTPS?
- 7. Hibernate query cache - per oggetti non nella cache di 2 ° livello - rischioso? utile? cattive pratiche?
- 8. Come fare in modo che Python avvisi su cattive pratiche e probabili errori?
- 9. Buone o cattive pratiche per le finestre di dialogo in wpf con MVVM?
- 10. Fabbriche "Singleton", ok o cattive?
- 11. PhoneGap - Cattive prestazioni rispetto al browser su Android
- 12. Quando Ganci arresto rompere le cattive
- 13. Aree MVC per aziende: buone o cattive?
- 14. Miscela di più file jQuery - Le migliori pratiche?
- 15. buone pratiche di Makefile
- 16. Buone pratiche: JDBC Connection
- 17. CSS Outline migliori pratiche
- 18. interfaccia Java migliori pratiche
- 19. Migliori pratiche del database
- 20. OpenGL VAO migliori pratiche
- 21. Applicazioni pratiche per AtomicInteger
- 22. variabili locali: Programmazione Pratiche
- 23. .htaccess migliori pratiche
- 24. WPF themeing migliori pratiche
- 25. Cattive abitudini? L'utilizzo non canonico di C# utilizzando la dichiarazione
- 26. WebGL e Chrome: l'alta risoluzione crea cattive prestazioni
- 27. Guida alle migliori pratiche: Swing
- 28. Pratiche errate POST codificate dall'URL?
- 29. ragioni pratiche per Сhurch codifica
- 30. Pratiche di ricostruzione dell'indice Sitecore
So che ho già commentato, ma questa domanda è un duplicato esatto: http://stackoverflow.com/questions/1229259/jquery-pitfalls-to-avoid –