Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/09/2012, 02:10
kikeking1
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 17
Respuesta: javascript no funciona despues de cargar contenido con ajax

Lo que te dice el amigo maycolalvarez. Cuando traes el nuevo contenido estas cambiado en el dom de la página, por lo que cuando ejecutaste la función que asigna el evento al "popup" al cargar la pagina, solo se itinero sobre los eventos que habian en ese momento (el primer mes) cuando cambias debes ejecutar de nuevo la función, para que itinere de nuevo.

Es decir, la funcion que tienes en "coda.js" (la ultima que nos indicas en tu post) en vez de ejecutarla como funcion anonima, ponle un nombre, el que mas coraje te de.

Cuando carges por primera vez la página, simplemente invoca a la función para que se ejecute y funcione con el primer mapa (generado con el php).

Luego a la función de cargarcalendario() despues de hacer el .html() debes ejecutar tambien la función que carga el popup.

Imaginemos que decides llamar a la funcion "cargapopup()", la cosa quedaria algo asi:


Código:
$(function cargapopup() {
	$('.date_has_event').each(function () {
		// options
		var distance = 10;
		var time = 250;
		var hideDelay = 500;

		var hideDelayTimer = null;

[.....]

					popup.css('display', 'none');
				});
			}, hideDelay);
		});
	});

cargapopup();  // Antes del cierre de $(), para que se ejecute cuando este completamente cargada la página.

});

Y la funcion cargacalendario() quedaria algo asi:

Código:
function cargarCalendario(datos){
//donde se mostrará el resultado de la eliminacion
divResultado = document.getElementById('calendariomes');
//usaremos un cuadro de confirmacion
//instanciamos el objetoAjax
ajax=objetoAjax();
//uso del medotod GET
//indicamos el archivo que realizará el proceso de eliminación
//junto con un valor que representa el id del empleado
ajax.open("GET", "includes/carga-calendario.php?mes="+datos);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
//mostrar resultados en esta capa
divResultado.innerHTML = ajax.responseText
cargapopup();
}
}
//como hacemos uso del metodo GET
//colocamos null
ajax.send(null)
}


P.D.: He visto que estas usando Jquery, pero a la par estas creando el objeto xmlhttp a la vieja usanza, Jquery crea de por si el objeto para ajax y tiene sus propios funciones para realizar las peticiones ajax (.GET(), .POST(), .AJAX() ) que simplifican mucho tanto la creación de codigo como el control de peticiones y estados. Te recomiendo te pases por la documentación de jquery y le eches un vistazo a esto, porque vas a invertir 30 45 minutos en leer y comprender como usarlo y vas a ahorrar muchisimas horas de picado de texto manual. (Y el codigo que tienes ahora mismo podria ser mucho mas limpio y reducido, lo que se traduce en mayor facilidad de mantenimiento y reutilización del codigo)

P.D2.: Sobre el metodo .Live() es para versiones "antiguas" de jquery, apartir de la 1.7 (y va por la 1.8.1) .live() quedo obsoleto y actualmente se usa el evento .on() que es mas o menos lo mismo, pero con sus mejoras y tal, echale un ojo también.


Un saludo y espero haberte ayudado.