Comment changer le CSS après le chargement paresseux d’image (jQuery)?

J’ai le problème suivant: lorsque l’utilisateur clique sur une image miniature, une image plus grande est chargée avec un chargement différé et s’ouvre. Le code pour charger la plus grande image est:

 

Lorsque l’utilisateur clique sur une image miniature, le code suivant est exécuté:

 $("img.thumb").click(function() { var $cont = $(this).siblings('.item-content').children('.big'); $cont.attr('src', $cont.attr("data-original")); setTimeout(function(){ $cont.css({'height': 'auto', 'width': '100%'}); }, 600); }); 

Le CSS "height" chaque grande image doit être réglé sur "auto" , et la "width" définie sur "100%" car je crée une présentation réactive / fluide. Le code ci-dessus tire sa valeur d’atsortingbut "src" atsortingbut "data-original" . Mais "height: auto" et "width:100%" sont définis dans cet exemple à 600ms après le remplacement des atsortingbuts. Cela ne fonctionne pas car j’utilise le plugin Isotope jQuery ( http://isotope.metafizzy.co/ ) pour cela et ce plugin a besoin de la largeur et de la hauteur réelles de l’élément pour positionner correctement la grid. Lorsque "height: auto" et "width:100%" sont définis lors du chargement d’une image, le plug-in est perdu et positionne les éléments de manière incorrecte.

Alors, comment coder pour définir ces 2 propriétés CSS après le chargement de l’image?

Vous pouvez utiliser .load()

 $('img.big').load(function() { if($(this).attr('src') == $(this).attr('data-original')) { $(this).css({'height': 'auto', 'width': '100%'}); } }); 

http://jsfiddle.net/TYufy/4/ – exemple utilisant .load()

Eh bien, j’ai trouvé la solution: il existe un petit plugin jQuery, appelé imagesLoaded . Il déclenche un rappel une fois que toutes les images enfants sélectionnées ont été chargées. Le problème était que vous ne pouvez pas faire de .load() sur les images en cache.