2010-11-07 9 views
0

Voici peut-être quelques questions en une ici, je crée une galerie d'images et je voulais que les vignettes s'affichent sur la page l'une après l'autre, cela doit être dynamique à la quantité de images dans un div (pour la réutilisation sur les autres pages de la galerie)Jquery afficher les images les unes après les autres

$(function { 
var $gallImages = $('#galleryThumbs img'); 


for(i=0; i<=$gallImages.length; i++){ 
    $(document.getElementById('galleryThumbs').getElementsByTagName('img')[i]).addClass('done').fadeIn('slow'); 

}}); 

Cette affiche les images toutes en même temps la charge :(

est là aussi une meilleure façon de faire la collecte des éléments dans jQuery I n'a pas pu trouver quoi que ce soit sur l'utilisation du tableau nécessaire pour les balises d'image

Toute aide sur ce serait apprécié, je frappe un bloc mental sur ce

+0

$ ('# galleryThumbs img'); Que signifie ce qui précède? Toutes les images ayant l'ID "galleryThumbs"? Puis-je avoir le même identifiant dans différents tags d'image? Si oui, à quoi cela sert-il de spécifier le même identifiant dans différents tags? –

+0

@lax - cela signifie, obtenez-moi toutes les images à l'intérieur de l'élément avec un identifiant de 'galleryThumbs' – mrtsherman

Répondre

3

Vous pouvez simplement ajouter un .delay() à chacun, comme ceci:

$(function { 
    $('#galleryThumbs img').each(function(i) { 
    $(this).delay(i*600).fadeIn('slow') 
    }); 
}); 

Je ne sais pas quand votre classe devrait être ajouté cependant, vous pouvez le faire immédiatement ou .queue(), selon si cela devrait se produire juste avant le fondu. Cela s'estompe dans la première immédiatement, la seconde 600ms plus tard (quand le premier fondu se termine), le suivant après cela, etc. Si vous voulez un chevauchement juste inférieur 600 (qui est ce que 'slow' est).

Pour ajouter la classe immédiatement, Fondu un par un:

$('#galleryThumbs img').addClass('done').each(function(i) { 
    $(this).delay(i*600).fadeIn('slow') 
}); 

Ou, pour l'ajouter juste avant la décoloration:

$('#galleryThumbs img').each(function(i) { 
    $(this).delay(i*600).queue(function(n) { $(this).addClass('done'); n(); }) 
         .fadeIn('slow') 
}); 
+0

Salut, ah cool est logique, seulement je reçois une erreur de syntaxe sur ce, 'Delay n'est pas une fonction' – user499846

+0

@ user499846 -are vous utilisez un «D» majuscule? c'est sensible à la casse :) Si vous chantez en minuscule, quelle version de jQuery êtes-vous? –

+0

J'utilise jquery-1.4.3.min.js – user499846

Questions connexes