2011-07-10 7 views
2

は、私はsetTimeoutを例に投稿するHow to Delay automatic opening of Modal Dialog box window in JQuery 1.5.x?ので、必要はありませんようにsetTimeoutを使用する方法を知っているjQuery UI dialog.open()でdelay()を使用できますか?

if($.cookie('form_seen') == null) { 
    $("#dialog_form").dialog("open"); 
} 

準備文書で、このコードのインラインを持っています。

私は正しい構文は、私が代わりにsetTimeoutを

のこの場合
if($.cookie('form_seen') == null) { 
    $("#dialog_form").delay(5000).dialog("open"); 
} 

または類似

を.delay使用したい場合、それは私が希望明らかにされていませんどのようになるか、私の個人的な教育のために疑問に思いました私は$("#dialog_form").dialog("open");をsetTimeoutによって呼び出された関数にラップしなければならないので、クローズや$(これ)を見つける必要はありませんが、他の状況では私はよりスマートなチェーンを想像することができます。長所と短所に コメントは

+0

ないことをお勧め非常に歓迎され、遅延はキューに入れられた効果の間の休止のためです。 setTimeoutはあなたに何を与えていないのですか? – redsquare

+0

更新を参照してください。 – mplungjan

答えて

8
if($.cookie('form_seen') == null) { 
    $("#dialog_form") 
    .delay(5000) 
    .queue(function(next){ 
     $(this).dialog("open"); 
     next(); // take this function out of queue a.k.a dequeue a.k.a notify done 
       // so the next function on the queue continues execution... 
    }) 
} 

OR

if($.cookie('form_seen') == null) { 
    $("#dialog_form") 
    .delay(5000) 
    .queue(function(){ 
     $(this) 
      .dialog("open") 
      .dequeue(); // take this function out of queue a.k.a dequeue a.k.a notify done 
         // so the next function on the queue continues execution... 
    }) 
} 
+0

わかりません。 next()は何をしますか? – mplungjan

+0

@mplungjan: 'next()'は '.dequeue()'関数を渡します。これはキューが動き続けることを保証します。つまり、キューに入れられた機能が実行された後、キューから取り出される必要があるため、キューの実行を続行できます。 – Shef

+0

おかげさまで、私はこの複雑なコードでは本当に利点がないので、代わりにsetTimeoutを使用しますが、あなたはあなたに答えました。質問 – mplungjan

関連する問題