2011-04-27 2 views
1

jQuery로 아약스 요청을 한 후에 언젠가는 콘텐츠를 표시하려고하는데 문제가 있습니다.jQuery가 setTimeout을 사용하여 콘텐츠를 표시하지 않습니다.

$.ajax({ 
      url: 'content.php', 
      data: '&go=' + tab, 
      success: function(data) { 
       setTimeout("pencil()",3250); 
       setTimeout('$("#content").html(data).fadeIn()',5000); 
      } 
     }); 

문제는 "내용이"오초 후에이 방법으로로드되지 않는 것입니다 : 여기

는 코드입니다. 그러나 setTimeout을 지정하지 않으면 바로 나타납니다. 그러나 그런 식으로 애니메이션을 손상시킵니다.

어떻게 해결할 수 있습니까?

감사합니다.

답변

2

당신은 그것의 기능

$.ajax({ 
    url: 'content.php', 
    data: '&go=' + tab, 
    success: function (data) { 
     setTimeout(pencil, 3250); //pass in a function reference preferably. 
     setTimeout(function(){$("#content").html(data).fadeIn()}, 5000); //wrap it in a function 
    } 
}); 
+0

완전한 예제와 통지가 대신 함수 참조를 전달해 주셔서 감사합니다 :) – PGZ

4

setTimeout에 전달 된 문자열에서 변수 data을 사용하고 있지만 해당 변수가 실행될 때 더 이상 존재하지 않습니다.

대신 문자열의 함수 개체를 사용하여이 문제를 해결할 수 있습니다 data의 값이 폐쇄에서 개최되기 때문에이 작동

setTimeout(function() { 
    $("#content").html(data).fadeIn() 
}, 5000); 

합니다.

+0

에 jQuery를 호출을 래핑 할 필요가! 감사! – PGZ

3

문제는 아마도 jQuery 코드를 문자열 입력의 setTimeout에 넣는 것일 수 있습니다. 시험해보기 :

setTimeout(function(){$("#content").html(data).fadeIn()},5000); 

나는 이것이 작동해야한다고 생각합니다. 이전 접근법의 문제점은 setTimeout이 "연필 (데이터);"이라고 쓰면 입력이있는 함수를 실행할 수 없다는 것입니다. 그것도 작동하지 않을 것이다.

관련 문제