2012-03-30 13 views
5

¿Qué métodos jQuery se deben evitar a favor de los métodos/propiedades integradas?Cuándo utilizar los métodos jQuery wrapper en lugar de los métodos incorporados de javascript

Ejemplo:

$('#el').each(function(){ 

    // this.id vs $(this).attr('id'); 
    // this.checked vs $(this).is(':checked'); 

});; 
+2

¿Por qué debe evitarse cualquier? Se invirtieron miles de horas-hombre para garantizar la compatibilidad entre navegadores. – Sparky

+0

bueno, sí, pero algunos de ellos son simplemente envoltorios para cosas que probablemente no cambien en javascript – Alex

+0

Supongo que solo estoy tratando de llegar a la raíz de por qué lo preguntas. ¿Tienes problemas con algo? – Sparky

Respuesta

1

Ésta es una pregunta amplia, pero aquí hay un par de guías que creo que son útiles. Puede/debe usar métodos nativos js cuando:

  1. Ya sabe lo que está haciendo. Es decir, conoce las especificaciones y las posibles incoherencias entre los navegadores.
  2. Está escribiendo un fragmento de código de rendimiento crítico donde la conveniencia no es la prioridad
  3. No está satisfecho con la forma en que funciona la función de biblioteca. Esto puede descomponer a lo siguiente: aplicación
    • biblioteca está libre de errores, (que pasa)
    • implementación de la biblioteca es incompleta (por ejemplo, todavía no soporta algunas características nuevas que están bien para utilizar en su caso)
    • simplemente su visión de alguna característica es diferente de la biblioteca de aplicación

La primera condición debe ser cierto en cualquier caso :) Los otros pueden combinar o ir por separado. Entiendo que todos son discutibles y pueden provocar largas conversaciones sobre filosofía, pero creo que son buenos puntos de partida y resumen muchos casos.

Pero la conclusión es - si no tiene un motivo para evitar los métodos de la biblioteca, ¡úselos!

3

que utiliza la propiedad Javascript directa como this.id en estos casos:

  1. Cada vez que hace exactamente lo que quiero.
  2. Cuando la velocidad es importante.
  3. Cuando todos los navegadores que me interesan soportan exactamente lo que necesito.

uso el método de acceso jQuery cuando:

  1. Hay problemas de soporte de navegadores o no estoy seguro de que no hay problemas con el navegador cruz.
  2. Cuando el modo jQuery tiene más o mejor funcionalidad que es útil en mi circunstancia.
  3. Cuando es parte de una operación encadenada y el encadenamiento funciona mejor con jQuery.
  4. Cuando ya estoy usando jQuery para esta operación y parece incoherente mezclar/combinar algunos accesos directos y algunos jQuery.

Por ejemplo: str = $(elem).html() realmente no tiene ninguna ventaja sobre str = elem.innerHTML, pero $(elem).html(str) tiene algunas ventajas sobre elem.innerHTML = str; porque el método jQuery va a limpiar los objetos que se están eliminando de forma más completa que la forma innerHTML.

+0

Irónicamente 'href' es un ejemplo en el que jQuery ** no hace algo por usted (los navegadores difieren en si una URL relativa en un atributo' href' sale totalmente calificada o no en la propiedad 'href'). Además, los atributos booleanos son precisamente lo que jQuery tiene mal, una y otra vez. * "jQuery ya ha desinfectado el valor en un booleano" *: no, el booleano ya existe como la propiedad 'checked', y lo ha hecho de manera confiable en todos los principales navegadores desde IE 4. Simplemente use' this.checked' (y también para todos los demás atributos booleanos). Es mejor que la alternativa jQuery en todos los sentidos. –

+0

Vea también http://whattheheadsaid.com/2010/10/utilizing-the-awesome-power-of-jquery-to-access-properties-of-an-element –

+0

@TimDown - Limpié los ejemplos. – jfriend00

1

La mayoría de las propiedades DOM están libres de problemas en todos los principales navegadores. Para los dos ejemplos que menciona (id y checked), las propiedades DOM son 100% confiables y deben usarse con preferencia al equivalente jQuery para confiabilidad, rendimiento y legibilidad.

Lo mismo vale para todas las propiedades correspondientes a los atributos booleanos: readonly, disabled, selected son comunes. Here are some more. className también es 100% sólido. Para otras propiedades y atributos, depende de usted. Usar una biblioteca como jQuery puede ser el mejor enfoque para estos si no está seguro y puede darse el lujo de perder algo de rendimiento (generalmente el caso).

desbordamiento de pila regular de Andy Earnshaw ha blogueado en esto: http://whattheheadsaid.com/2010/10/utilizing-the-awesome-power-of-jquery-to-access-properties-of-an-element

+0

sorprende más de 20 operaciones solo para obtener el ID :) – Alex

Cuestiones relacionadas