¿Cuáles son las malas/peores prácticas de JQuery que ha visto, escrito o que debería evitarse?Jquery Prácticas erróneas
Respuesta
Una cosa que debe evitar es usar los selectores "fáciles de usar" en cada línea una vez más, porque la implementación de JavaScript de los selectores no es que eficiente. Por supuesto, los muchachos de Quantum lo están optimizando, sin embargo, creo que deberías usarlo lo menos posible.
Por lo tanto, esta es una mala práctica.
$("li ul span").show();
$("li ul span").toggleClass("bubu");
encadenamiento es bueno
$("li ul span").show().toggleClass("bubu");
Y recordando las cosas de una variable local tampoco es malo:
var allspans = $("li ul span");
allspans.show();
allspans.toggleClass("bubu");
Sí, mucha gente hace esto. Es tan malo para el rendimiento. – jerone
+1 para señalar encadenamiento y variables locales! –
Aún utilizando el antiguo documento de la función de lista:
$("document").ready(function(){ });
En lugar de la muy com lun:
$(function(){ });
No es realmente malo, pero muestro que la gente no se levanta con nuevas API.
El uso de '$ (document) .ready (...)' se usa a menudo para hacer que el código sea explícitamente claro. Por supuesto que no es necesario, pero no es una mala práctica de la OMI. –
Eso es lo que dije. :) – jerone
¿Puedes explicarme por qué debería hacer eso?Creo que la primera versión tiene más sentido: estamos adjuntando un manejador de eventos al objeto DOCUMENT. El otro ... aunque quizás funcione mejor ... no se explica por sí mismo. – naivists
Hay dos que veo un montón:
Primera, en un evento de clic, el id
se accede de esta manera:
$("a").click(function(e){
var id = $(this).attr('id');
});
Eso crea un nuevo objeto jQuery alrededor del DOM nodo, y llama a una función. La siguiente es la forma correcta:
$("a").click(function(e){
var id = this.id;
});
Nota: Esto también verá $(this).attr('href')
, pero eso es correcto debido a la forma de jQuery se normaliza en todos los navegadores.
El segundo está pasando nada, excepto un nodo DOM en el parámetro scope
de la llamada jQuery:
$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();
no hay aumento de velocidad en absoluto al hacer esto. Cuando usted ve un aumento de velocidad, es cuando ya tiene el elemento DOM:
$('div').click(function(){
$('img', this).doSomething(); // This is good
});
James Padolsey ha escrito en código jQuery an excellent article huele. Recomiendo leerlo
que es un buen artículo – Anurag
- 1. Reparar las URL de referencia erróneas
- 2. Estándares jQuery y mejores prácticas
- 3. ASP.net MVC - Vistas y mejores prácticas jQuery
- 4. Rails 3.0/3.1, JQuery & Ajax Mejores prácticas
- 5. Dimensiones erróneas devueltas de Display y DisplayMetrics en Android 3.2?
- 6. Registrar consultas erróneas solo en el servidor SQL
- 7. Proyecto Django utilizando configuraciones de base de datos erróneas (antiguas)
- 8. jQuery a través de las mejores prácticas de Google CDN
- 9. , jQuery Mobile, mejores prácticas de arquitectura de PhoneGap
- 10. Jquery mouse-over fade-in/out (prácticas recomendadas)
- 11. JQuery Mobile - Mejores prácticas de inicio de sesión
- 12. Creación div múltiple, jquery/javascript, rendimiento/mejores prácticas
- 13. Cargando complementos de jQuery y mejores prácticas de scripts múltiples
- 14. Node.js + mejores prácticas repetitivo
- 15. Múltiples archivos javascript/css: ¿mejores prácticas?
- 16. UITableView Mejores prácticas
- 17. Java enumeración mejores prácticas
- 18. prácticas de programación defensivas
- 19. Mejores prácticas de NAnt
- 20. Prácticas recomendadas de HttpRuntime.Cache
- 21. Buenas prácticas de NoSQL
- 22. mejores prácticas de ctags
- 23. Prácticas recomendadas de Fragment
- 24. Mejores prácticas de CoreData
- 25. Mejores prácticas de LDAP
- 26. Integración continua: mejores prácticas
- 27. Mejores prácticas de PyLint?
- 28. CONEXIÓN SQL mejores prácticas
- 29. ¿Mejores prácticas de Flex?
- 30. DTO: mejores prácticas
Sé que ya lo comento, pero esta pregunta es un duplicado exacto: http://stackoverflow.com/questions/1229259/jquery-pitfalls-to-avoid –