2011-07-05 4 views
0

문제가 있습니다. BG를 중간에 놓아야하기 때문에 GET이 완전히 끝났을 때 무언가를하고 싶습니다. 이 함수는 완전히 크기를 조정하고 있지만 이미지 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

아약스 호출이 완료되면 콜백 함수가 실행됩니다. 작동하지 않는 것은 무엇입니까? – 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()가 0보다 클 때까지 루프 setTimeout를 사용해야합니다.