Foros del Web » Programando para Internet » Jquery »

Reparar/adaptar código jQuery para IE

Estas en el tema de Reparar/adaptar código jQuery para IE en el foro de Jquery en Foros del Web. Gracias a la muy generosa aportación de Mayid (gracias de nuevo) conseguí este código para una página con varias galerías de imágenes. [URL="http://www.forosdelweb.com/f127/variable-para-atributo-id-seleccionado-824866"]Ésta es la ...
  #1 (permalink)  
Antiguo 09/08/2010, 10:38
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Reparar/adaptar código jQuery para IE

Gracias a la muy generosa aportación de Mayid (gracias de nuevo) conseguí este código para una página con varias galerías de imágenes. [URL="http://www.forosdelweb.com/f127/variable-para-atributo-id-seleccionado-824866"]Ésta es la historia.[/URL]

Aquí el código:
Código:
$(document).ready(function(){
    $('div.espacios a').click(function (evt) {
        evt.preventDefault();
        
        var largePath = $(this).attr("href");
        var largeAlt = $(this).attr("title");
        
        escenario = $(this).siblings("div.escenario");
        loader = escenario.children("div.loader");
        
        loader.fadeIn("slow", function() {
        
        laImagen = escenario.children("img");
        
        laImagen.attr({ src: largePath, alt: largeAlt }).load(function() {
        loader.fadeOut("slow");
        });
    });
});
El problema es que con IE (de la versión 7 en adelante) en el primer 'click' para cambiar la imagen, se queda el div con el gif animado (loader): no hace fadeOut. Repito que sólo sucede con Internet Explorer y es sólo en el primer 'click'.

Recibid un cordial saludo.

Última edición por Facundo72; 09/08/2010 a las 10:43
  #2 (permalink)  
Antiguo 12/08/2010, 05:03
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Reparar/adaptar código jQuery para IE

Hola, ¿nadie conoce qué problema puede presentar este código para el motor javascript de Internet Explorer?

Gracias de antemano.
  #3 (permalink)  
Antiguo 12/08/2010, 08:55
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 10 meses
Puntos: 14
Respuesta: Reparar/adaptar código jQuery para IE

Código Javascript:
Ver original
  1. var escenario = $(this).siblings("div.escenario");
  2. var loader = escenario.children("div.loader");
  3.  
  4. var laImagen = escenario.children("img");

fijate, inicializando las variables así, esto siempre me trae problemas con IE.
  #4 (permalink)  
Antiguo 12/08/2010, 10:08
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Reparar/adaptar código jQuery para IE

Gracias, pero no resuelve el problema. La única manera que he encontrado para que funcione casi perfecto en IE, es siendo menos específico con el loader:

Código:
loader = $("div.loader");
Aunque ahora, obviamente, aparecen todos los .loader.

Lo que no sé es por qué se produce ese error en IE. Parece que esta línea es la clave:
Código:
var loader = escenario.children("div.loader");
Un saludo
  #5 (permalink)  
Antiguo 13/08/2010, 07:50
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 10 meses
Puntos: 14
Respuesta: Reparar/adaptar código jQuery para IE

en vez de utilizar
Código Javascript:
Ver original
  1. var escenario = $(this).siblings("div.escenario");
  2. var loader = escenario.children("div.loader");

Utiliza:
Código Javascript:
Ver original
  1. var loader = $('.escenario .loader');
  #6 (permalink)  
Antiguo 13/08/2010, 11:40
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Reparar/adaptar código jQuery para IE

Gracias por el feedback, Kokoou. Lo que propones es, a todos los efectos, lo mismo que:

Código:
var loader = $("div.loader");
El problema es que hay varias galerías en la misma página, es decir, varios div.espacios que contienen el correspondiente .escenario. De modo que de esta manera que planteas, van a aparecer todos los div.loader de todos los .escenario al hacer click. La idea es que sólo aparezca el .loader que corresponde al .espacio en que hacemos click, de ahí:

Código:
var escenario = $(this).siblings("div.escenario");
La clave está en siblings como me explicó Mayid en el post original (que no consigo enlazar con el wysiwyg del foro) --> http://www.forosdelweb.com/f127/variable-para-atributo-id-seleccionado-824866

De hecho de este modo
Código:
var loader = $('.escenario .loader');
se produce un error recursivo (según la web developer tool).

A falta de mejor solución, lo que voy a hacer es quitar el gif animado de fondo del div.loader sólo para IE.


Recibe un cordial saludo.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:44.