2010-03-09 13 views
1

Je dois charger 2 images ou plus hors de l'écran et les afficher avec une transition uniquement lorsque toutes sont chargées.Image de chargement imbriquée avec jquery

Je vais avoir quelques problèmes avec la charge() Voici ma fonction il montre un div avec un message de chargement, lorsque le img est chargé, il cache le message loadig et appeler une fonction à la transition visuelle (transizione ()

function load_img(sezione) { 
    if (sezione==1) {sfondo = "sfondo2.jpg"; footer = "footer1.jpg";} 
    else if (sezione==2) {sfondo = "sfondo3.jpg"; footer = "footer2.jpg";} 
    else if (sezione==3) {sfondo = "sfondo4.jpg"; footer = "footer3.jpg";} 
    else if (sezione==4) {sfondo = "sfondo5.jpg"; footer = "footer4.jpg";} 

    $("#loading").fadeIn(); 

    $("#sfondo2").load(function() { 
    $("#loading").hide(); 
    transizione(); 
    }).attr('src', 'img/'+sfondo); 

} 

Comment puis-je le modifier pour appeler 2 images? Je suis un peu confus avec la façon dont la charge() fonctionne pour les images

Merci

Giuseppe

Répondre

1

La fonction « charge », pour les images, est utilisé pour mettre en place un gestionnaire d'événements. En d'autres termes, il vous permet de fournir une fonction à appeler lorsqu'une image est complètement chargée.

Si vous voulez attendre plus d'une image à charger, et quand ils sont tous chargés que vous voulez faire quelque chose, vous pouvez mettre en place quelque chose comme ceci:

var $images = $('#image1, #image2'), count = $images.length; 
$images.load(function() { 
    --count; 
    if (count === 0) { 
    // here the count is zero, so all images are ready 
    transizione(); // ? whatever you want 
    } 
}); 

Voir? Cela fait que toutes les images ont le même gestionnaire de "chargement", et ce qu'il fait est juste décompté jusqu'à ce que toutes les différentes images soient prêtes (parce que le compte sera nul).

Peut-être que je n'ai pas compris votre besoin ici, Gusepo.

+0

juste une préférence personnelle, mais je n'ai jamais aimé var images $ = $ ('# image1, # image2'), count = $ images.length; sur var $ images = $ ('# image1, # image2'); var count = $ images.length; - sur des lignes séparées. –

+0

Le formatage vrai pour cet environnement n'est pas forcément ce que je ferais en code réel. – Pointy

+0

C'est exactement ce que j'essaie de faire, mais je ne peux pas le faire fonctionner correctement, lorsque vous écrivez var $ images = $ ('# image1, # image2'), count = $ images.length; sont des ID # image1 et # image2 des balises img? Lorsque je lance la fonction la première fois que cela fonctionne, "count" me renvoie des valeurs amusantes comme 3 ou -2, -1 Dois-je réinitialiser les valeurs d'une certaine façon? Remerciements G – Gusepo