2010-08-11 7 views
8

¿Hay una mejor manera de concatenar cadenas que tienen "'s (como etiqueta HTML definiciones de atributo) en jQuery que se escape la citajQuery: ¿mejor forma de concatenar cadenas que tienen citas?

Escapy Ejemplo:?

$(this).prepend("<label for=\""+$(this).attr("id")+"\">"+"a"+"</label>");

+0

¿Utiliza comillas simples para las definiciones de atributos de etiquetas HTML? – Adam

+0

hum me preguntaba si jQuery podría tener una función para procesar tales cadenas – ina

+1

Para el registro: '$ (this) .attr (" id ")' es una forma inflada y redundante de decir 'this.id'. – Tomalak

Respuesta

10

Usted puede utilizar el método objeto de la creación ($(html, props)), así:

$('<label />', { for: this.id, text: 'a' }).prependTo(this); 
//or: 
$(this).prepend($('<label />', { for: this.id, text: 'a' })); 

Esto tiene la ventaja de llamar .text() internos, teniendo cuidado de cualquier problema de codificación. Además, si está haciendo esto en un lote , será más rápido, ya que el fragmento de HTML es coherente y se almacena en caché, por lo que se usa un clon del nodo, en lugar de convertir una cadena en un fragmento de documento cada vez. Cuantos más elementos como este que está creando, más rápido es sobre el método de cadena. Por las mismas razones de almacenamiento en caché, cuanto mayor sea el elemento (hasta una cadena de 512 caracteres) mayores serán las ganancias.

+1

+1 Buena alternativa. – user113716

+0

mucho más legible también –

+0

+1 para el almacenamiento en memoria caché de fragmento interno jQuery fu – jmar777

6

se puede usar sola cotizaciones de la cadena principal y entonces no tiene que escapar de las comillas.

$(this).prepend('<label for="'+$(this).attr("id")+'">'+ a +'</label>'); 
1

las comillas simples?

$(this).prepend('<label for="'+$(this).attr("id")+'">'+'a'+'</label>'); 

o, jQuery:

$("<label>").attr("for", this.id).text(a).prependTo(this); 
5

Es por esto que principalmente uso comillas simples $('here'). Menos de qué preocuparse cuando trabajas con HTML que inevitablemente está lleno de comillas dobles.

$('""""No worries!"""""""') 

El Google JavaScript Style Guide está de acuerdo.

+0

¿Qué pasa si tienes html con palabras como '" cometa Ben Franklin "'? – ina

+1

Bueno, entonces has vuelto a escapar. Nada es perfecto, ¿verdad? También puede codificar para facilitar el caso más común. –

+0

o ¿qué sucede cuando necesitas repetirlo con PHP? –

1

Las comillas simples son definitivamente el camino a seguir. Recomiendo usarlos para todas las cadenas en javascript. Particularmente cuando se trabaja con jQuery, es mucho más común que necesite utilizar una comilla doble dentro de una cadena que una comilla simple, por lo que le ahorrará mucho tiempo de escape y mejorará la legibilidad. Además, le ahorrará pulsaciones de teclas, no más teclas de mayúsculas molestas :)

Cuestiones relacionadas