Je construis une page où je veux utiliser le script Galleria (http://devkick.com/lab/galleria/) et le widget Accordéon de jQuery pour masquer différentes catégories de vignettes de la galerie. Dans mon initialisation je l'ai écrit comme suggéré par les manuels des deux scripts:Ordre d'initialisation de jQuery
<script type="text/javascript">
jQuery(function($) {
$('ul.gallery').galleria({
insert: "#image"
});
$("#thumbs").accordion();
});
</script>
La fonction galleria()
crée des vignettes et affecte la taille appropriée pour eux. Ensuite, la fonction accordion()
attribue ses styles et réduit les éléments actuellement invisibles. Avec le code ci-dessus, j'ai un problème avec certaines images vignettes devenant invisibles en raison d'avoir des dimensions nulles. Si je mets des alertes avant que les tailles des vignettes ne soient affectées dans la fonction galleria()
, je peux voir que pour les images qui se trouvent dans les pages invisibles de l'accordéon, leur conteneur n'a aucune dimension à ce moment-là. C'est très étrange pour moi parce que je pensais que ces fonctions s'exécutent consécutivement et que accordion()
n'est pas appelée avant que galleria()
ne soit terminée.
Quoi de plus étrange, si je mets une alerte avant la fonction accordéon, alors tout est traité dans le bon ordre.
Il est évident que je suis confronté à une condition de concurrence ici. Pourquoi cela arrive-t-il et que dois-je faire pour garantir une séquence d'initialisation ordonnée?
C'est tout! Honte à moi, aurait pu me deviner. Les tailles des vignettes ne sont pas définies dans l'initialiseur galleria(), mais dans le gestionnaire d'événements load() pour l'objet image. Je l'ai manqué pendant que j'examinais les sources de galleria. Merci! – Corvin