Problema con html que se carga en un div mediante Javascript
Hola a todos;
Veréis, os comenta un problema que tengo en una web que estoy desarrollando y me esta dando algún problema que otro.
Tengo un galeria.php en el cual estoy desarrollando como el propio nombre indica la galeria de la web.
En esa galeria hay un desplegable de años y meses, es decir, cuando haces clic en, por ejemplo 2007 / Enero, en otro div de la página te carga un html con las fotos que corresponden.
Para cargarlo utilizo en el head el siguiente código:
<script type="text/javascript">
function Carga(url,id)
{
//Creamos un objeto dependiendo del navegador
var objeto;
if (window.XMLHttpRequest)
{
//Mozilla, Safari, etc
objeto = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
//Nuestro querido IE
try {
objeto = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try { //Version mas antigua
objeto = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!objeto)
{
alert("No ha sido posible crear un objeto de XMLHttpRequest");
}
//Cuando XMLHttpRequest cambie de estado, ejecutamos esta funcion
objeto.onreadystatechange=function()
{
cargarobjeto(objeto, id)
}
objeto.open('GET', url, true) // indicamos con el método open la url a cargar
objeto.send(null) // Enviamos los datos con el metodo send
}function cargarobjeto(objeto, id)
{
if (objeto.readyState == 4) //si se ha cargado completamente
document.getElementById(id).innerHTML=objeto.responseText
else //en caso contrario, mostramos un gif simulando una precarga
document.getElementById(id).innerHTML='<img src="images/logo_black.png" alt="cargando" class="cargando" />'
}
</script>
y el enlace tiene el siguiente aspecto:
<a href="javascript:Carga('galeria/01-2007.php','galeria_contenido');">enero</a>
Lo hace perfectamente. El problema lo tengo cuando en el html que me carga en el div, quiero meter una galería de fotos jquery (la colorbox concretamente), no funciona de ninguna de las maneras. He probado agregando las librerías en el propio galeria.php, agregándolas en el html que carga en el div etc... y nada.
He probado a insertarla directamente desde galeria.php, sin pasar por la carga del html. y funciona.
Si alguien me puede echar una mano o recomendar alguna solución se lo agradecería mucho.
Eso es todo, un saludo y muchas gracias por adelantado!
La
markshock
Este Mr Soriano tan conciso como siempre ^_^ a mi me encanta la función ".load()" !!!
marcos_nieto
Muchas gracias MrSoriano;
Me ha funcionado a la perfección, me has quitado una buena de encima.
Muchas gracias a todos los que me habéis echado un cable y saludos!!
Usuario desconocido
Vale, utiliza esto:
$(document).ready(function(){
$(".galeria_seleccionada").live('click',function(evento){
evento.preventDefault();
$("#galeria_contenido").load("galeria/01-2007.php");
});
})
Todo esto suponiendo que utilizas la última versión de Jquery, que creo que es la 1.4
Así te debería funcionar, ya que es como si recargaras el DOM y tu navegador ya se entera de que tiene una galería de imágenes dentro de ese div.
Prueba y nos cuentas
marcos_nieto
Hola a todos;
Gracias por las respuestas;
Lo he modificado y he cargado los contenidos vía ajax, con el siguiente parámetro, aparte de la librería jquery;
El caso es que cuando cargo en el duv la página 01_2007.php, sigo sin poder hacer funcionar la galería colorbox. Cargo el js de la galería directamente desde la página madre, es decir, desde galería php.
Repito que gracias por las respuestas, a ver si logro hacerlo funcionar.
Saludos!
webfordesigners
Hola!
Pues a ver por lo que pones hay varias cosas que cojean.
1. Por dios, usa las librerias de jquery también para el AJAX y déjate de crear los objetos ActiveX. Ese script tiene por lo menos 5 años!
2. El script que usas no interpreta el javascript que carga con el get. Si cargas javascript debes interpretarlo. El browser no va a estar comprobando por ti si lo que cargas es javascript o es html. De eso te encargas tu. Usa esto
http://api.jquery.com/jQuery.getScript/
3. La manera correcta de hacerlo de todas maneras no es cargando javascript sino teniendo el script ya en la pagina y cargando SOLO el contenido html de la galería y cuando la funcion ha acabado (success) ejecuta el script con el contenido nuevo.
Espero haberte sido de ayuda. Igual voy completamente desencaminado. Corrígeme si me equivoco.
Santi
Usuario desconocido
Yo creo que el problema viene porque en tu DOM no tienes la galería cargada desde el principio, por eso, en la memoria de tu navegador no lo reconoce.
Para esto es muy muy útil el método .live de Jquery. Y seguro que esta librería te viene muy bien, mucho mejor que meter todo el JS a manini.
Échale un vistazo y me cuentas