2011-07-05 4 views
0

J'ai un problème. Je veux faire quelque chose quand mon GET est complètement terminé, parce que je dois placer BG au milieu. Cette fonction fonctionne totalement sur le redimensionnement, mais cela ne fonctionnera pas lorsque je chargerai l'image onClick. Un moyen d'éviter celui-ci?

Exemple:

getBG.php retourne <img id="bgImage" src="123.jpg" />

Problème:

Il ne sera pas calculer correctement la variable a parce que je pense qu'il essaie de le faire avant même image est chargée. Cela fonctionne très bien onResize événement lorsque l'image est entièrement chargée.

$.get("getBg.php", { 
      img: (this).id 
     }, 
     function(data){ 
      $("#bg").html(data); 
      var a = $("#bgImage").height() - $(window).height(); 
      $("#bgImage").css("margin-top", - a/2); 
     }); 
+1

Il est difficile de comprendre ce que vous demandez ... la fonction de rappel s'exécute lorsque l'appel ajax est terminé. Qu'est-ce qui ne fonctionne pas? – Fosco

Répondre

1

Vous devez connecter directement l'événement de chargement de la nouvelle image. Je suppose que l'élément de #bgImage est l'image, c'est probablement ce que vous voulez.

$.get("getBg.php", { 
      img: (this).id 
     }, 
     function(data){ 
      $("#bg").html(data); 
      $("#bgImage").load(function() { 
       var a = $(this).height() - $(window).height(); 
       $(this).css("margin-top", - a/2); 
      } 
     }); 
+0

Etrangement cela ne résout pas le problème. Si j'ajoute une alerte ("test"); ça se voit, mais l'image n'est toujours pas placée au milieu ... Oh, attends. Cela fonctionne sur FF et IE mais pas sur Chrome ...: | – sed

0

Vous aurez besoin d'utiliser setTimeout en boucle jusqu'à ce que $("#bgImage").height() est supérieur à zéro.

Questions connexes