2010-03-26 8 views
8

Ich versuche, die Breite einer Zeichenfolge zu bestimmen. Ich benutze den folgenden Code, aber es gibt immer 0 zurück. Es scheint, dass, wie das Span-Element erstellt wird und nicht bereits im Seitenrumpf vorhanden ist, jQuery width() 0 zurückgibt. Gibt es eine Möglichkeit, so dass ich das bekommen kann Breite des Textes, ohne auf Dummy-HTML-Code in der Seite zu erstellen?jQuery width() gibt 0 für ein span-Element zurück, das im laufenden Betrieb erstellt wurde?

Thanks :)

$('<span>test</span>').width(); // width = 0 
$('span.width').width(); // returns a width value 

<body><span class="width">test</span></body> 

Antwort

8

Das Element muss im DOM vorhanden sein, damit die Breite berechnet werden kann. Wenn Sie dies berechnen müssen, bevor der Benutzer das Element sehen kann, versuchen Sie, es zu verbergen, bevor Sie es in das DOM einfügen.

+0

@Dominic Danke für die Bearbeitung :) –

1

Sie können versuchen, das Steuerelement mit der CSS-Eigenschaft visibility: hidden auf der Seite hinzufügen, bevor die Größe bekommen, daher die Notwendigkeit vermieden wird das Element sichtbar zu machen.

Es gibt keine Möglichkeit, die Breite zu erhalten, ohne die Steuerung hinzuzufügen, da viele verschiedene Dinge die Breite beeinträchtigen können.

0

Sie nicht eine Breite von einem Inline-Element so eingestellt, dass Sie wahrscheinlich immer 0 erhalten, oder null oder nicht definiert, oder einige Variation der Ausgabe, die Ihnen überhaupt nicht helfen wird.

0

Wenn Sie die Breite mit Inline-CSS festlegen, glaube ich, dass Breite den richtigen Wert zurückgibt. Nicht ideal, aber für einige Kontexte möglicherweise OK.

Verwandte Themen