2011-07-05 175 views
0

我遇到了问题。当我的GET完全完成时,我想要做一些事情,因为我需要将BG放在中间。此功能完全适用于调整大小,但是当我加载图像onClick时,这不起作用。任何方式来避免这一个?

例子:

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

问题:

它将无法正确计算变量a,因为我认为这是试图做的是图像之前甚至加载。当图像完全加载时,它可以正常工作。

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

你需要使用setTimeout循环,直到$("#bgImage").height()大于零。

相关问题