2010-05-19 7 views
0

Relativement nouveau à JQuery. J'ai du code qui fait un échange de bannière avec un fondu en transition de fondu. Les images sont échangées comme prévu dans IE8, chrome et firefox. Cependant, le fondu réel, la transition en douceur entre les images ne fonctionne que dans IE.Pourquoi mon échange d'image JQuery ne fonctionne-t-il pas dans firefox ou chrome, mais bien dans IE?

Quelqu'un peut-il me diriger dans la bonne direction pour une solution?

Javascript:

function swapImages() { 
      var $active = $('#transitionImagePlaceHolder .active'); 
      var $next = ($('#transitionImagePlaceHolder .active').next().length > 0) ? $('#transitionImagePlaceHolder .active').next() : $('#transitionImagePlaceHolder img:first'); 

      $active.fadeOut('slow', function() { 

       $next.fadeIn('slow').addClass('active'); 
       $active.removeClass('active'); 
      }); 
     } 

     $(document).ready(function() { 
      setInterval('swapImages()', 5000); 
     }); 

CSS:

#transitionImagePlaceHolder 
    { 

    } 


    #transitionImagePlaceHolder 
    { 
     position:relative; 
     left: 26px; 
    } 

    #transitionImagePlaceHolder img 
    { 
     display:none; 
     position:absolute; 
     top:4; 
     left:10; 
    } 

HTML:

<div id="transitionImagePlaceHolder"> 

     <img class="active" src="Images/TransitionImages/Trans_Img_1.jpg" /> 
     <img src="Images/TransitionImages/Trans_Img_2.jpg" /> 
     <img src="Images/TransitionImages/Trans_Img_3.jpg" /> 


</div> 
+0

En utilisant votre code, les transitions sont les mêmes dans les trois navigateurs ici (lisse). –

+0

Ceci est également facile pour moi, en testant dans Chrome. Mettez l'exemple ici: http://jsbin.com/ekazi3/edit (accéléré et utilisé des boîtes au lieu d'images). Cherchez-vous un fondu enchaîné au lieu d'une transition de fondu entrant/sortant? – RussellUresti

Répondre

0

Je ne suis pas sûr de ce que le problème est parce que j'ai mis en place l'exemple ci-dessous à JSFiddle et ça fonctionne bien à la fois dans Safari et Firefox. La seule chose que je peux penser est que vous définissez votre fonction swapImages quelque part que vous ne devriez pas être. Vous devriez probablement installer Firebug dans Firefox et voir si vous obtenez une erreur.

http://jsfiddle.net/GtV3U/

Edit: Je soupçonne que vous devez prendre l'appel setInterval sur (document) $ .ready (function() {} ).

+0

Salut, merci pour ça. Tout d'abord cela ressemble à un outil vraiment utile dont je n'avais pas entendu parler, et il a également mis en évidence le problème - j'utilisais la version 1.4.1, comme avec le nouveau Visual Studio 2010. L'avoir résolu pour le 1.4.2 a résolu le problème. Merci mon pote. – gb2d

0

Au lieu d'utiliser jQuery, utilisez la petite et efficace JsSlideshow Voir une démonstration rapide here - il fonctionne sur tous les navigateurs.

Il peut facilement être mis en place comme celui-ci

var sl = new JsSlideshow({ 
    target: "slideshow", 
    images: ["4504470765_90aa261be6.jpg", "images/4510204607_42bbb55d9c.jpg", "images/4510826808_f6edfc906a.jpg", "images/4513712885_0c008e3638.jpg"], 
    transition: 3000, 
    time: 2000, 
    url: "http://www.flickr.com/photos/bobowen" 
}); 
+2

Je veux rester à JQuery si possible. C'est un cadre que je veux apprendre, je vais m'en tenir à ça. Y at-il une autre méthode dans le cadre qui est plus susceptible de fonctionner par navigateur? – gb2d

0

Je dirais que c'est parce que Firefox et Chrome (probablement à juste titre) ne modifient pas display propriété css tout fadeIn/fadeOut. Faire un test rapide: au lieu de display:none; en CSS, faites très vite fadeOut (20 ms) sur les images non-actives après (document) .ready.

Si cela fonctionne, vous saurez que vous devez trouver un autre moyen de masquer les images en charge.

Questions connexes