2011-03-13 2 views
0

Voici ce diaporama simple, j'utilise:slideshow simple, jQuery crée de longues pauses

function slideShow(){ 
var current = $('#animation .show'); 
var next = current.next().length ? current.next() : current.parent().children(':first'); 
current.removeClass('show'); 
next.addClass('show'); 
setTimeout(slideShow, 500); 
} 



$(document).ready(function() { 
    slideShow(); 
}); 

Il fonctionne, mais il crée de longues pauses entre les images ... Est-il un moyen de résoudre ce problème? Merci d'avance!

EDIT c'est le code HTML, je suppose que les pauses était le mauvais mot, ce que je veux réaliser est chaque image est affichée immédiatement après l'autre, en ce moment j'ai un petit écart que rien ne s'affiche.

<div id="animation"> 
<img alt="graphic" class="show" src="files/animation_img/GRAPHIC.jpg" /> 
<img alt="design" src="files/animation_img/DESIGN.jpg" /> 
<img alt="etc" src="files/animation_img/ETC.jpg" /> 
</div> 

et le CSS:

#animation img 
    { 
    position:fixed; 
    top:400px; 
    left:700px; 
    display:none; 
    visibility:hidden; 
    width:200px; 
    height:100px; 
    } 
+0

Je pense que votre code ne fonctionne pas correctement. Selon votre code, vos images passeraient à moins de 0,5 seconde par image !! – JohnP

+0

[Ici] (http://jsfiddle.net/zzUqG/) est un jsfiddle démontrant que votre code fonctionne très bien. – Pointy

+0

pouvez-vous poster le HTML? Et le CSS? Est-ce que votre version montre vraiment toutes les choses dans l'élément "animation"? – Pointy

Répondre

0

Essayez cette

function slideShow(){ 
    var current = $('#animation .show'); 
    var next = current.next().length ? current.next() : current.parent().children(':first'); 
    current.removeClass('show'); 
    next.addClass('show'); 
} 

$(document).ready(function() { 
    setInterval(slideShow, 500) 
}); 
+0

@JohnP laissez-moi vérifier le code une fois de plus –

+0

Il n'y a pas vraiment de problème avec la configuration d'un gestionnaire de délai d'attente. Ce n'est pas vraiment récursif car le prochain appel à la fonction se produira longtemps après le retour du premier appel; ainsi, à tout moment, il n'y aura qu'une seule invocation active de la fonction. – Pointy

+0

@experimentX, j'ai retiré mon vote plus tôt. Vous utilisez setInterval et non timeout. Votre suggestion est valide :) – JohnP