Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2013, 21:19
Gatosaurio
 
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad de México
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Anidamiento de ordenes de carga indeseados

Hola, buen día. Recurro nuevamente a ustedes debido a que no logro encontrar el porque sucede algo con mi código.

Mi problema es el siguiente, tengo una página con index.html que posee un div denominado #carga en el cual vierto el contenido de la navegación del sitio, todo esto para evitar recargar la página una y otra vez.

Para lo anterior ocupo un script en jQuery que carga y descarga contenido en el div #carga. Todo parece funcionar adecuadamente, pero tengo 2 únicos enlaces que se abren en una nueva ventana, para lo cual añado una clase a su etiqueta <a>; compruebo si el vínculo posee la clase y si no la tiene hago que cargue la página en el div #carga

Todo funciona hasta que se clickea un vinculo para una nueva ventana; si se ha hecho click en otro vinculo, que cargue contenido dentro del div #carga usa ese click para abrir una ventana extra con el contenido del vínculo externo. Lo peor de todo es que toma en cuenta el número de clicks anteriores y puede llegar a abrir muchisimas ventanas nuevas.

Al principio pensé que era por la cache y establecí el valor en false, pero sigue el mismo comportamiento. También pensé que sería por una línea de código donde atraigo el mismo archivo .js que uso, y lo hago mediante getScript; pero ya deshabilité dicha línea de código y continúa sin funcionar.

Aquí les dejo mi código:
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $.ajax({ cache: false});
  3.     $("a").on("click", function(e){
  4.         e.preventDefault();
  5.        
  6.         if ($(this).hasClass("ext"))
  7.         {
  8.             window.open($(this).attr("href"), "_blank");
  9.         }
  10.         else
  11.         {
  12.             $.get($(this).attr("href"), function(data){
  13.                 $("#carga").html(data);
  14.                 $("#carga").fadeIn().animate({height: "auto"}, 5000);
  15.                 /*$.getScript("js/refrescador.js");*/
  16.             });
  17.         }
  18.     });
  19.  
  20.     $(document).ajaxStart(function(){
  21.         $("#cargando").fadeIn();
  22.         $("#encerrar_cargando").fadeIn();
  23.         console.log("Se inicio ajaxStart");
  24.     });
  25.  
  26.     $(document).ajaxStop(function(){
  27.         $("#cargando").fadeOut("slow");
  28.         $("#encerrar_cargando").fadeOut("slow");
  29.         console.log("Concluyó ajaxStart");
  30.     });
  31. });

De antemano muchas gracias