2010-08-16 10 views
6

Tengo problemas para configurar la altura de un elemento que estoy cargando de forma dinámica.jquery establece la altura DESPUÉS de la carga

Utilizo la función jquery load para cargar una página externa (dinámica) en un div (#cbox) en mi página actual. Debido a que esta subpágina es dinámica, no puedo saber de antemano cuál es la altura del contenido. Quiero obtener la altura una vez que se haya cargado el contenido y establecer la altura del contenedor div para que coincida para que mi fondo de color css baje completamente. He intentado muchas variaciones de divs de altura del 100% en css solamente, pero tan pronto como me desplazo por la página, el color se desplaza hacia arriba (100% parece establecer solo el 100% de la altura de la ventana del navegador, yb/c el contenido es dinámicamente cargada no funciona. Mi solución es establecer la altura del div a la altura del contenido cargado, pero esto solo funciona en el SEGUNDO clic (porque en ese punto la página está cargada y es accesible. Lo que necesito averiguar cómo hacerlo es cambiar la altura del div DESPUÉS de que la página externa ya se haya cargado, pero parece que no puedo resolverlo.

Espero que esto sea comprensible para alguien, me doy cuenta que es un poco intrincado.

aquí está mi código onclick:

jQuery('#cbox').load('externalpage.php'); 
jQuery('#cbox').height(jQuery('#content').height()); 

ACTUALIZACIÓN: Las siguientes soluciones de trabajo si quiero fijar la altura a la div. Pero ahora me parece que solo quiero configurarlo a esa altura div SI la altura del contenido es TALLER más que la ventana. De lo contrario, quiero que se establezca en 100%. He intentado modificar su código ligeramente a este (evento onlick):

jQuery('#cbox').load('<?php the_permalink(); ?>', function() 
    { 
     if (jQuery('#cbox').height() < jQuery('#content').height()) 
     { 
     jQuery('#cbox').height(jQuery('#content').height()); 
     } 
     else 
     { 
     jQuery('#cbox').height('100%'); 
     } 
    }); 

pero no funciona ... alguna idea?

+0

¿Por qué no utiliza el acceso directo '$' para jQuery? '$ ('# cbox')' es mucho más corto que 'jQuery ('# cbox')';) – Znarkus

+1

@Znarkus Podría estar causando conflictos con otras bibliotecas. Sé que cierto CMS molesto usa una horrible versión personalizada de jQuery. –

+0

podría estar usando una biblioteca diferente junto con jquery – corroded

Respuesta

16

Debe llamar a la función de devolución de llamada después de cargar el contenido.

jQuery('#cbox').load('externalpage.php', function() { 
    jQuery('#cbox').height(jQuery('#content').height()); 
}); 
+0

¡Gástame por 40 segundos! –

+0

lol me desvié, les hubiera vencido a los dos: voto de P para ustedes de todos modos: P – corroded

+0

gracias a ustedes dos! :) Eso funciona si quiero establecer la altura de ese div. Pero ahora me parece que solo quiero configurarlo a esa altura div SI la altura del contenido es TALLER más que la ventana. De lo contrario, quiero que se establezca en 100%. Traté de modificar su código ligeramente a este (evento onlick): jQuery ('# cbox'). Load ('', Function() { if (jQuery ('# cbox') .height() Stephen

4

Utilice la carga de devolución de llamada.

jQuery('#cbox').load('externalpage.php', function() { 
    jQuery('#cbox').height(jQuery('#content').height()); 
}); 
Cuestiones relacionadas