Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/03/2015, 17:15
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 4 meses
Puntos: 977
Respuesta: Problema al cargar HTML+JS con AJAX

Lo que necesitas es delegar eventos. Por ejemplo, supongamos que en mi documento cargaré mediante una petición asíncrona (Ajax), N imágenes que están en otro archivo y que son resultado de una búsqueda en la BD, luego, quiero que al darle clic a cada imagen, se haga más opaca. Entonces, al ser varias imágenes que tendrán el mismo efecto, en lugar de asignarles el evento a cada una mediante sus id, utilizo una clase en común, de tal modo que quedaría así:

Código Javascript:
Ver original
  1. [].forEach.call(document.querySelector(".laClase"), function(img){
  2.     img.addEventListener("click", function(){
  3.         this.style.opacity = 0.75;
  4.     }, false);
  5. });

Pero como originalmente no existen esas imágenes pues cargarán después mediante Ajax, desisto de lo anterior y mejor delego dicho evento ya sea al documento o a la ventana y mediante la propiedad target del objeto del evento, obtengo al elemento en el cual se ha producido el evento:

Código Javascript:
Ver original
  1. window.addEventListener("click", function(event){
  2.     if (event.target.className == "laClase"){
  3.         event.target.style.opacity = 0.75;
  4.     }
  5. }, false);

De esta manera, cada vez que se de un clic en cualquier parte de la ventana, se verificará si la clase del elemento pulsado corresponde con el de las imágenes y de ser así, lo hacemos opaco, y al ser la ventana la que siempre se verá afectada por el evento, dará igual si las imágenes se añaden después.

También puedes añadir el script al documento, pero eso ya lo decidirás tú.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand