2010-08-11 11 views
8

Gibt es eine bessere Möglichkeit Strings verketten, die „'s (wie zB HTML-Tag Attributdefinitionen) in jQuery als Flucht aus dem Angebot habenjQuery - bessere Möglichkeit, Strings mit Zitaten zu verketten?

Escapy Beispiel:

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

+0

Verwenden Sie einfache Anführungszeichen für HTML-Tag Attributdefinitionen? – Adam

+0

hum Ich frage mich, ob jQuery möglicherweise eine Funktion haben könnte, solche Strings zu verarbeiten – ina

+1

Für den Rekord: '$ (this) .attr (" id ")' ist eine aufgeblähte und redundante Art, 'this.id' zu sagen. – Tomalak

Antwort

10

Sie können die Objektmethode der Schöpfung verwenden ($(html, props)), wie folgt aus:

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

Dies hat den Vorteil von .text() intern nennen, die Pflege irgendwelche Kodierungsprobleme. Auch wenn Sie dies tun, ein Los, wird es schneller sein, da das HTML-Fragment konsistent und im Cache gespeichert ist, so dass ein Klon des Knotens verwendet wird, anstatt eine Zeichenfolge jedes Mal in ein Dokument Fragment. Je mehr Elemente Sie erstellen, desto schneller geht es über die String-Methode. Je größer der Caching-Wert ist, desto größer sind die Gewinne (bis zu 512 Char-Strings).

+1

+1 Schöne Alternative zu verwenden. – user113716

+0

weit besser lesbar zu –

+0

+1 für jQuery internen Fragment Caching fu – jmar777

6

können Sie einzelne verwenden Haupt String zitiert für und dann müssen Sie nicht die doppelten Anführungszeichen entkommen.

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

Einfache Anführungszeichen?

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

oder jQuery:

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

Deshalb verwende ich hauptsächlich einfache Anführungszeichen $('here'). Weniger Sorgen machen, wenn Sie mit HTML arbeiten, das zwangsläufig aus doppelten Anführungszeichen besteht.

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

Die Google JavaScript Style Guide stimmt zu.

+0

was ist, wenn Sie HTML mit Wörtern wie "Ben Franklins Kite" haben? – ina

+1

Nun, dann bist du zurück zu entkommen. Nichts ist perfekt, oder? Kann Code auch, um den allgemeinsten Fall einfacher zu machen. –

+0

oder was, wenn Sie es mit PHP wiederholen müssen? –

1

Einfache Anführungszeichen sind definitiv der Weg zu gehen. Ich empfehle, sie für alle Zeichenfolgen in Javascript zu verwenden. Besonders bei der Arbeit mit jQuery ist es viel häufiger erforderlich, ein doppeltes Anführungszeichen innerhalb einer Zeichenfolge zu verwenden als ein einfaches Anführungszeichen, so dass Sie viel Zeit sparen und die Lesbarkeit verbessern können. Darüber hinaus wird es sparen Tastenanschläge, nicht mehr lästige Shift-Taste :)

Verwandte Themen