2011-04-14 36 views
12

¿Hay alguna manera de devolver la altura de un elemento que ya está configurado en automático? Acabo de obtener 0 cuando llamo $ ("# element"). Height();Jquery obtener la altura del elemento de altura automática

Aquí está el código jquery. El img.height() devuelve 0, por lo tanto, el resultado final está desactivado.

img.css({top: (img.parent().height() - img.height()) /2, left: (img.parent().outerWidth() - img.outerWidth())/2}); 

El HTML se parece a esto:

<div id="exploreImage" class="virtual-room-large" style="width: 288px; height: auto; top: 185px; left: 89px; "> 
+0

Normalmente, si 'height()' devuelve 0, la altura * del elemento es * 0. ¿Puede mostrar el código HTML del elemento y su contenido, y el código jQuery completo? –

Respuesta

-1

¿Usted intentó $("#element").outerHeight()? Obtiene la altura calculada en lugar de la altura establecida explícitamente.

+9

Devuelve 0 también – brenjt

+0

No funciona en absoluto. –

+9

Si esto no funciona, ¿por qué es la respuesta aceptada? – slim

1

compruebe que intenta obtener la altura cuando DOM está listo, es decir en la función window.onload.

En caso de que su elemento div esté vacío y la altura sea automática, devolverá 0. Por lo tanto, es probable que su div esté vacío antes de que se cargue la página completa.

Por ejemplo: Quiero recordar alturas iniciales para mis divs .elementDiv:

var initialHeight = []; 
window.onload = function() { 
$('.elementDiv').each(function(i) { 
    initialHeight[i]=$(this).height(); 
    }); 
    // then use it 
    } 

Cuando no está en la función onload, las alturas que recibo son todos 0.

espero que este fue el razón, porque no veo otra cosa ..

1

He encontrado una solución para hacer una transición con facilidad y facilidad. Esta solución necesita el "salto" del elemento:

var elementselector = "#elementtoscroll"; 
$(elementselector).css("height", "auto"); 
var elemheight = $(elementselector).css("height"); 
$(elementselector).css("height", "0"); 
$(elementselector).css("height", elemheight); 

De esta manera, obtiene la altura Javascript - Yo sé que no es una forma beuatiful, pero funciona. Esto es importante, por ejemplo, para el efecto de relajación.

EDIT: Hay que decir, que esto es sólo posible con CSS3 y un estilo CSS-como esto:

#panel{ 
    background-color: #FF00FF; 
    display: block; 
    height: 0px; 
    transition: all 300ms ease-in-out; 
    overflow: hidden; 
} 
+0

¡buena idea, funciona para mí! – Picard

-1

creo offsetHeight o clientHeight o scrollHeight pueden resolverlo.por ejemplo:

img.parent()[0].offsetHeight 

o

img.parent()[0].scrollHeight 

diferente entre estos 3 métodos puede ver aquí:

+0

Explique las diferencias (y las implicaciones de cada método) en la respuesta, en lugar de vincularlas a fuentes externas. –

+0

Creo que sí. pero los 2 enlaces explican bien. – Galley

+0

Siempre es bueno incluir el contexto para el contenido en sus enlaces. Eche un vistazo aquí: http://stackoverflow.com/help/how-to- answer, especialmente las razones detrás de agregar la parte importante del contenido vinculado. –

0

Yo Puedes probar Window.getComputedStyle();

Se devolverá el conjunto de estilo computarizada, (si es que la propiedad de estilo no está definido, por ejemplo automóviles)

var elem1 = document.getElementById("elemId"); 
var style = window.getComputedStyle(elem1); 

entonces se puede decir

var computedHeight = style.height; 

para más información: https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle

Cuestiones relacionadas