2011-12-18 2 views
4

5 초 후에 jQuery UI 대화 상자가 닫히지 만 아래 코드는 아무런 제안도하지 않습니까? 나는 alert("hellow")으로 테스트했지만 제대로 작동했지만 아래 코드는 작동하지 않습니다.setTimeout()을 사용하여 jQuery UI를 닫습니다.

success: function(data) { 

$(data).dialog({ 

    modal: true, 
    width: 900, 
    height: 600, 
    resizable: false, 
    title: thetitle, 
    draggable: false, 
    open: function(event, ui) { 
     setTimeout('$(this).dialog("close");', 5000);     
    } 
}); 

왜 5 초 후에 대화 상자가 닫히지 않습니까? 아무것도하지 않습니다.

답변

6

setTimeout을 문자열이 아닌 실제 함수로 전달하고 싶을 것입니다.

setTimeout(function() { 
    $(data).dialog("close"); 
}, 5000); 

당신이 문자열을 전달

이 코드는 내가 ( $(this).dialog가 작동하지 않을 것입니다 이유입니다) 전역 객체를 확인 세트를 꽤 this이야 eval 'D입니다.

참고 this하지 않습니다 위의 방법과 하나 (다시 this 그 시점에서 전역 객체이기 때문에),하지만 여전히 setTimeout에 문자열을 전달하는 것보다 훨씬, 훨씬 더 양식을 간주됩니다.

0
var sT = setTimeout('$(this).dialog("close");', 5000); 
+0

감사합니다. 실제로 adam rackis가 맞았지만 settimeout 기능을 사용하면 오류가 발생했습니다. 도와 주셔서 고마워요. –

1

jquery .delay()는 어떨까요?

success: function(data) { 

$(data).dialog({ 

    modal: true, 
    width: 900, 
    height: 600, 
    resizable: false, 
    title: thetitle, 
    draggable: false, 
    open: function(event, ui) { 
     $(this).dialog("close").delay(5000);    
    } 
}); 
+0

알다시피 무식한 사람이라고는 말하지 않고 jQuery 함수 지연()을 알지 못했지만이 프로젝트에서 많은 코드를 해결하고 정리하는 데 도움이 될 수 있습니다. 내 문제를 읽을 시간을내어 주셔서 감사합니다! –

관련 문제