2013-04-21 11 views
6

Myślę, że to mogło być domyślne w poprzedniej wersji jquery, ale kiedy dzwoni .css("height") i .height(), zwraca obliczoną wysokość, która nie jest tym, co chcę - Chcę tylko wartość wysokości, jeśli jest ona konkretnie zadeklarowana w pliku CSS dla tego elementu.Powrót Wysokość CSS z Jquery, Nie obliczona, ale zadeklarowana

jak gdyby nie została zadeklarowana w dowolnym miejscu, być może powróci 'auto' jak to robi na górze i lewo czasami ...

Na przykład, mój CSS wygląda następująco:

.element{ 
    margin-left:5px; 
    color:red; 
} 

.css("margin-left") zwraca "5px", natomiast .css("height") powraca 20 mimo że nie jest specjalnie ustawione ...

Dzięki

+0

Wygląda na to duplikat to pytanie: http: // stackover flow.com/questions/4105355/jquery-javascript-csswidth-check-if-style-is-decined-in-css –

+0

Nie jest to duplikat pytania. Ale zdecydowanie jedna z odpowiedzi wydaje się odpowiadać na to pytanie. http://stackoverflow.com/a/4105468/672455 – hop

Odpowiedz

0

Przeglądarka automatycznie oblicza wysokość i szerokość CSS.

Można je zobaczyć, na przykład, w zakładce "obliczone style" w Chrome Developers Tools (F12)

i Dokumenty:

jQuery.width()

Get bieżącą szerokość obliczoną dla pierwszy element w zestawie dopasowanych elementów lub ustaw szerokość każdego dopasowanego elementu.

Różnica .css (szerokość), a .width() jest fakt, że zwraca wartość piksela jednostki mniej (na przykład 400), podczas gdy poprzedni zwraca wartość z całych jednostek (na przykład 400 pikseli)

Ale jeśli chcesz uzyskać prawidłową wartość CSS, mogę doradzić nie używać jQuery

jeśli mamy HTML:

<div id="elem" style="height: auto"></div> 

możemy writ e JS:

$('#elem').get(0).style.height // "auto" 

jeśli mamy HTML:

<div id="elem"></div> 

JS:

$('#elem').get(0).style.height // "" 

uniwersalny funkcyjne:

var height = function(elem){ 
     return $(elem).get(0).style.height === "" ? $(elem).height() : $(elem).get(0).style.height; 
} 
+0

Masz rację. Ale pytanie brzmi jeszcze inaczej: – hop

+0

@hop, przepraszam. Dodaję użyteczne informacje na dole posta – Ozerich

+0

Pytanie brzmi, czy nie ma stylu zestaw _linii LUB w arkuszu stylów_ powinien powrócić "auto". Umieściłem twój kod w [jsfiddle] (http://jsfiddle.net/8R6m5/).Z '.get (0) .style' zwraca tylko coś, jeśli jest ustawione inline. Z '.height()' jQuery zwraca wartość obliczoną. – allicarn

Powiązane problemy