11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'utilise le code suivant, qui fonctionne sans problème :

$('.monimage').attr({src: src, alt: alt}).fadeIn();


L'image est correctement affichée, à l'endroit voulu.

J'aimerais néanmoins qu'elle ne soit affichée que lorsqu'elle est entièrement chargée. J'ai donc remplacé le code précédent par ceci :

var img = new Image();
$(img).load(function() {
	$('.monimage').attr({src: src, alt: alt}).fadeIn();
}).attr('src', src);


Et là, c'est le drame : l'image ne s'affiche plus !

Si quelqu'un voulait voir le résultat en ligne, il s'agit du 3ème carousel (sous le titre "C'est vous qui le dites !") sur cette page, où l'on voit que le title des images est affiché, mais pas l'image elle-même.

Quelqu'un comprend-il pourquoi ? Merci de votre aide !
Modifié par Fix (28 Mar 2012 - 11:19)
Modérateur
Bonjour!

Déjà pourquoi charges-tu l'image dans un objet que tu n'utilises pas? Pour la recharger ensuite? C'est assez frauduleux comme technique


$('.jcarousel-img-' + x)
  .load(function() {
    $(this).fadeIn();
  })
  .attr({src: all_images[x]['src'], alt: all_images[x]['title']});


comme ça ça me paraît déjà mieux!

ensuite il me semble que tu as un problème là:

all_images[w]['src'] = $(this).find('src').text();

devrait plutôt être:

all_images[w]['src'] = $(this).attr('src');

parce que les balises src, height et url, je connais pas^^!
Effectivement, charger l'image dans un objet que je n'utilise pas n'était pas une bonne idée.

kustolovic a écrit :
ensuite il me semble que tu as un problème là:
all_images[w]['src'] = $(this).find('src').text();
devrait plutôt être:
all_images[w]['src'] = $(this).attr('src');
parce que les balises src, height et url, je connais pas^^!


Non. $(this) désigne le fichier xml.

Merci pour ton aide !