2012-02-09 10 views
1

私は次の単純な関数を書いています。この関数は、主にサーバーからjsonで返された別の関数からの2つのパラメータをとります。jQuery:通知機能付きタイムアウト/遅延?

var timing = 10000; 

function notificationOutput(type, message) { 
    console.log('output now!'); 
    var note = $('.notification'); 
    note.css('display', 'none'); 
    if (type == "success") { note.removeClass('warning').addClass('success'); } 
    if (type == "warning") { note.removeClass('success').addClass('warning'); } 
    note.find('.message').html(message); 
    note.slideDown(function() { 
     note.delay(timing).slideUp(); 
    }); 
} 

私のページの上部からバーをスライドさせるだけで、メッセージが表示されます(成功または警告)。 timing変数は、通知バーを10秒間表示するためのものです。だから関数がトリガーされたら、私はバーをslideDown()にして、その位置を10秒間保持してからslideUp()に戻します。

しかし、今すぐ機能が起動されると、通知バーが表示されるまで奇妙なタイムアウトが発生します。つまり、機能が起動すると、私がそこに持っているconsole.log()の出力がすぐにJSコンソールに記録されますが、slideDown()の表示には数秒かかります!何故ですか?

output nowがコンソールに記録されているのと同時に、slideDown()をすぐに実行します。なぜ遅延が起きていますか?

ありがとうございました!

+0

side note: 'note.slideDown()。delay(timing).slideUp();'も動作します。ここで終了コールバックを使用する必要はありません。 – Yoshi

答えて

0

何も明らかではありません。私はそれが期待通りに滑り落ちるまで、コードをトリミングしようとします。呼び出してみてください。また


など、コールバックを削除し、HTMLのセットを削除し、成功/警告クラスセッターを削除し、コンソールに出力する前にノート要素を選択し、即時ショーでスライドを置き換えます最初のノートの .stop(true,true)note.stop(true,true).slideDown();。これは、他のアニメーションで忙しく、スライドダウンがキューに入れられている場合です。

+0

奇妙なことに、 'note.stop(true、true).slideDown()'はその仕事をしました。 'show()'だけに設定すると問題なく動作しました。このキューイングがどこから来るのか分かりません。何か案は? – matt

+0

実際にはありません。たぶん、他のアニメーションが誤ってそれに付いているかもしれません。あなたが本当に知りたいのであれば、それが期待どおりに機能するまで、他のすべてを可能な限り削除/無効にします。 – Supr

+0

ねえ、別の質問です。私は 'delay()'関数で同じ問題を抱えています... 'timing'変数が10000に設定されていると、notifcationは3秒程度しかないままです。 – matt

0

は、私は問題が(logaritmicある)デフォルトでswingあるslideDownで使用easing機能であるかもしれないと思い、この

note.slideDown().delay(timing).slideUp(); 
0

を試してみてください。線形を使用してみてください、多分あなたはslideDowndurationの値を渡していない

note.slideDown(400, 'linear').delay(timing).slideUp(400, 'linear'); 
0

速くslidedown時間を使用してみてください。試み:

note.slideDown(1000, function() { 
    note.delay(timing).slideUp(); 
});