2011-07-26 7 views
0

なぜこれはうまくいかないのですか?jQuery:slideUp.delay.slideDown - ボタンでキャンセルしますか?

function notificationBoxOutput(type, message) { 
    var noteBox = $('.notificationBox'); 

    noteBox.slideDown(function() { 
     noteBox.delay(2500).slideUp(); 
    }); 
} 

function notificationBoxCancel() { 
     console.log('successfully fired'); 
    $('.notificationBox').slideUp(); 
} 

だから私はいくつかのフィードバックを与える、画面の一番上にステータスバーのようなものを持っている機能notificationBoxOutputを呼び出します。 bar slidesDownは、2,5秒間保持してからスライドアップします。

バーには、クリックするとnotificationBoxCancelという小さなアイコンが表示されます。したがって、ユーザーはバーを2.5秒以上早く閉じることができます。しかし、近づくと動作しません。コンソールは「正常に起動しました」と表示しますが、ボックスはslideUp()しません。 hide()は動作します! fadeOut()とslideUp()はそうではありません。

任意のアイデアなぜですか?

答えて

2

スライドする前にアニメーションを.stop()する必要があります。

function notificationBoxCancel() { 
     console.log('successfully fired'); 
    $('.notificationBox').stop().slideUp(); 
} 
0

アニメーションがキューに入れられているからだと思います。著者は非常に高速なボックスを開こうとしない限り、

function notificationBoxCancel() { 
     console.log('successfully fired'); 
    $('.notificationBox').stop(true,true).slideUp(); 
} 
+0

パラメータは必要ありません。stopslideUp前に呼び出すようにしてください。他のケースでは、コードが少なくて済みます。 – avall

+0

組み込みのアニメーションには、正しく停止するためのパラメータが必要なようでした...私の間違い。 – MatTheCat

関連する問題