wie bekomme ich innerWidth eines Elements in jquery WITHOUT scrollbar

7

Gibt es ein div, das eine Bildlaufleiste enthält (z. B. b / c des Überlaufs: auto), wie bekomme ich die genaue innere Breite des Elements? In meinem Beispiel: Ссылка Breite und innere Breite melden die gleiche Breite. Die Nummer, die ich möchte, sollte weniger als 100 sein.

HTML:

%Vor%

CSS:

%Vor%

Javascript:

%Vor%

Aktualisierung:

Ich brauche das, wenn das box2 div ein großes Bild enthält (dauert also eine Sekunde zum Laden). Hier ist ein Beispiel, das eine der folgenden Lösungen integriert (Lukx '), die nicht funktioniert: Ссылка . Irgendwelche Ideen, wie man darauf wartet, dass das Bild geladen wird, bevor die Breite berechnet wird?

    
mix 21.05.2012, 21:04
quelle

4 Antworten

16

Wenn Sie ein neues DIV in den #box1 -Container einfügen, erhält dieses DIV die verfügbare Breite - und beim Lesen seiner Breite wird ein Wert zurückgegeben, der korrekt zu sein scheint.

HTML und CSS bleiben unverändert

JS wird

%Vor%

Ich habe auch deine Geige gegabelt, um zu sehen, was ich getan habe: Ссылка

Um diesen Wert mit einer Funktion zu erhalten:

%Vor%     
Lukx 21.05.2012, 21:29
quelle
11

Ich bin mir nicht sicher, was genau Sie suchen, aber ich glaube, es ist entweder die scrollWidth oder clientWidth der div mit der ID box1.

Beide sind JavaScript-Eigenschaften und benötigen jQuery nicht zum Abrufen, können aber in jQuery mit dem folgenden $('#box1')[0] abgerufen werden. All dies bewirkt, dass das erste (und wenn Sie nur eine ID verwenden) DOM-Element aus dem jQuery-Selektor zurückgibt.

Wenn Sie nach der Breite des Inhalts von box1 suchen, unabhängig von der Bildlaufleiste, nach der Sie wahrscheinlich suchen, finden Sie $('#box1')[0].scrollWidth . Wenn Sie nach der verfügbaren Breite suchen und in Box1 angezeigt wird, suchen Sie nach $('#box1')[0].clientWidth .

Ich habe deine Geige gegabelt, damit du beide in Aktion sehen kannst. Ссылка

    
Aaron 21.05.2012 23:06
quelle
1

Sie können ein anderes div erstellen, indem Sie das ursprüngliche div kopieren, dann die Breite usw. erhalten. Etwas wie:

%Vor%

saveDiv.innerWidth gibt Ihnen 0

    
Frenchi In LA 21.05.2012 21:10
quelle
0

Wenn eine Lösung in einfachem JavaScript in Ordnung ist, können Sie die von David Walsh beschriebene Technik hier verwenden: Ссылка

Ich habe deine Geige gegabelt und umgesetzt: Ссылка

Aber noch einmal, dies verwendet nicht jQuery, nur Javascript.

    
jnaO 21.05.2012 21:46
quelle

Tags und Links