2011-12-18 13 views
4

5秒後にjQuery UIダイアログを閉じるようにしていますが、以下のコードは何も行いません。私はalert("hellow")でテストしましたが、うまくいきましたが、以下のコードはうまくいきません。jQuery UIをsetTimeout()で閉じるようにする

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は動作しないだろう理由である)グローバルオブジェクトにかなり確信してセットthiseval 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の機能の遅延()を知らなかったので、このプロジェクトで多くの悪いコードを解決してくれました。私の問題を読む時間をとってくれてありがとう! –

関連する問題