2011-07-05 24 views
0

問題があります。 BGを真ん中に置く必要があるので、GETが完全に完了したら何かしたいです。この関数は完全にサイズ変更に取り組んでいますが、image onClickを読み込むとこれは機能しません。これを避ける方法はありますか?

例:

getBG.phpを返し<img id="bgImage" src="123.jpg" />

問題:私は画像の前にしてもロードされていることをやろうとしていることと思うので

それは正しく変数aを計算しません。イメージが完全にロードされたときに、うまくonResizeイベントを処理します。

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

あなたが聞いていることを理解するのは難しいです...コールバック関数は、ajax呼び出しが完了すると実行されます。何が効いていないのですか? – Fosco

答えて

1

新しい画像のロードイベントを直接フックする必要があります。 #bgImageの要素がイメージであると仮定していますが、これはおそらくあなたが望むものです。

$.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

不思議なことに、これで問題は解決しません。アラートを追加する(「テスト」)。それはそれを示しているが、イメージはまだ中間に置かれていない...ああ待ってください。それはFFとIEで動作しますが、Chromeでは動作しません。 – sed

0

あなたは$("#bgImage").height()がゼロよりも大きくなるまでループするsetTimeoutを使用する必要があります。

関連する問題