2013-04-21 11 views
6

Penso che questo potrebbe essere il valore predefinito in una versione precedente di jQuery, ma quando chiamo .css("height") e .height(), restituisce l'altezza calcolata, che non è quello che voglio - Voglio solo un valore di altezza se è specificamente dichiarato in un file CSS per quell'elemento.Restituisce altezza CSS con Jquery, non calcolato, ma dichiarato

Come se non viene dichiarato da nessuna parte, forse potrebbe tornare 'auto' come invece accade per la parte superiore e ha lasciato a volte ...

Ad esempio, il mio CSS appare così:

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

.css("margin-left") restituisce "5px", mentre i rendimenti .css("height")20, anche se non è specificamente previsto ...

Grazie

+0

sembra un duplicato di questa domanda: http: // stackover flow.com/questions/4105355/jquery-javascript-csswidth-check-if-style-is-defined-in-css –

+0

Non una domanda duplicata. Ma, sicuramente una delle risposte sembra rispondere a questa domanda. http://stackoverflow.com/a/4105468/672455 – hop

risposta

0

Il browser calcola automaticamente altezza e larghezza CSS.

Li puoi vedere, per esempio, nel tab "stili calcolate" in Chrome sviluppatori Strumenti (F12)

e Google Documenti:

jQuery.width()

ottenere la larghezza calcolata corrente per il primo elemento nel set di elementi corrispondenti o impostare la larghezza di ogni elemento abbinato.

La differenza tra css (larghezza) e .width() è che quest'ultimo restituisce un valore di pixel unitario inferiore (per esempio, 400) mentre il primo restituisce un valore con unità integre (per esempio, 400 px)

Ma se si vuole ottenere il valore corretto CSS, posso consigliare di non utilizzare jQuery

se abbiamo HTML:

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

possiamo scritto e JS:

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

se abbiamo HTML:

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

JS:

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

funzione universale:

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

Sei corretto. Ma la domanda è un'altra cosa: – hop

+0

@hop, mi dispiace. Aggiungo informazioni utili in fondo al post – Ozerich

+0

La domanda è se non ci sono stili impostati _inline OR nel foglio di stile_ dovrebbe tornare "auto". Inserisco il codice in un [jsfiddle] (http://jsfiddle.net/8R6m5/).Con '.get (0) .style' restituisce solo qualcosa se è impostato in linea. Con jQuery '.height()', restituisce il valore calcolato. – allicarn