jQuery .css("left") gibt "auto" anstelle von tatsächlichen Wert in Chrom
Habe ich div-element mit Links und oben definiert ist, ohne absolute position, und ich möchte Lesen Sie die left und top Werte mit jQuery.
Mit $("#MyId").css("left")
gab das erwartete Ergebnis im IE-browser (IE8 -), aber in Chrome ist es wieder "auto" statt, obwohl die Werte sind ausdrücklich in das element style.
Hier ist der test-Fall:
http://jsfiddle.net/qCDkb/2/
Beachten Sie den Unterschied zwischen IE und Chrome.
Dies ist auch gut in jQuery 1.4.2 und "scheitern" in jQuery 1.4.3 und oben.
Alle Erkenntnisse sind willkommen. 🙂
Es steht zu Grund, dass die Rücksendung
Wie überprüft hier, bemerken die position ist jetzt 150px auf der linken Seite. jsfiddle.net/qCDkb/3 Position: relative Hinzugefügt, um die css.
Ich will nicht die aktuelle position, für das ich verwenden kann .position().Links - ich bin nach den definierten Wert im CSS für das element..
Scheint ein Missbrauch von css. Sie sollten Daten verwenden (). api.jquery.com/jQuery.data
Ich will nicht, um tatsächlich die position der element 150 Pixel nach Links. Ich will diese Werte nur als "Flagge" für die Verwendung später. Wahrscheinlich der falsche Ansatz.. :/
auto
ist das richtige Verhalten, als position: static
hört nicht auf die left
Attribut.Wie überprüft hier, bemerken die position ist jetzt 150px auf der linken Seite. jsfiddle.net/qCDkb/3 Position: relative Hinzugefügt, um die css.
Ich will nicht die aktuelle position, für das ich verwenden kann .position().Links - ich bin nach den definierten Wert im CSS für das element..
Scheint ein Missbrauch von css. Sie sollten Daten verwenden (). api.jquery.com/jQuery.data
Ich will nicht, um tatsächlich die position der element 150 Pixel nach Links. Ich will diese Werte nur als "Flagge" für die Verwendung später. Wahrscheinlich der falsche Ansatz.. :/
InformationsquelleAutor Shadow Wizard | 2010-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diskutiert in den Kommentaren, Einstellung
left
zuauto
für eineposition: static
klingt irgendwie nach rechts, zu sehen, wieleft
hat keine Bedeutung in dem Zusammenhang.Warum Chrome und IE unterschiedliche Werte zurückgeben:
.css()
bietet ein einheitliches gateway, Browser, berechnete Funktionen, nicht aber die Vereinheitlichung der Art und Weise der Browser tatsächlich die Berechnung der Stil. Es ist nicht ungewöhnlich für Browser, um zu entscheiden, wie edge Fällen anders.Warum jQuery 1.4.2 und 1.4.3 tun, das anders ist, weiß ich nicht sicher, aber da gibt es diese in 1.4.3 die release notes:
Sie müssen verstecken das element vor dem Lesen der Eigenschaft. Check it out hier, stackoverflow.com/a/20733569/607874
InformationsquelleAutor Pekka 웃
Versuchen
$("your selector").position().top;
Hat bei mir in Chrome und FF.
Hinweis: die "rendering" - Sequenz kommt hier ins Spiel, sowie stackoverflow.com/questions/1324568/...
InformationsquelleAutor Steven Benjamin
Es ist ein seltsames Verhalten für jQuery. Aber Sie können native javascript-Methoden, die css-Werte:
Dieser Ausdruck Rückkehr entsprechenden css-Eigenschaft.
Das funktioniert nur inline-CSS. Der richtige Weg ist hier stackoverflow.com/a/20733569/607874
InformationsquelleAutor vtambourine
hinzufügen
oder
dem element, das Sie verwenden Sie die Links auf
hehe, anscheinend nicht Fett genug. Mein schlechtes
InformationsquelleAutor montrealmike
Ich weiß, dies ist eine alte post, aber ich lief in das gleiche problem und dachte, ich würde vorschlagen, ein paar Lösungen. Es scheint, dass dieses problem ist nicht spezifisch für Chrome, wie ich war in der Lage zu reproduzieren, die in Firefox als auch.
War ich in der Lage, dies zu lösen, gibt es zwei Möglichkeiten. Entweder legen Sie CSS-Stile in der gleichen Datei wie Ihre HTML -, anstelle der Verwendung einer separaten CSS-Datei. ODER, rufen Sie die Funktion im inneren des Fensters.onload. Sieht aus wie die Werte sind, die nicht der browser, bis alles geladen wurde, WENN die styles in ein externes Stylesheet.
Hoffe, das ist hilfreich.
InformationsquelleAutor g3logic