2012-01-27 3 views
0

ページ上部に表示される通知バーが表示され、xx秒後にslideOutが実行されます。私はまた、slideOutを早くするためにクリックすることができるアイコンを持っています。一定の時間が経過した後にクリックと対戦して重複したjqueryアニメーションを防止する

問題は、ボタンを押すとアニメーションが2回起こることです。クリックしてからxx秒後に消えて表示され、再びslideOutを実行します。

イベントをバインドするためにこれを別に書く必要があると思いますか?またはif文を追加する必要がありますか?あなただけのこと

var hideTimeout = window.setTimeout(hideNotification, 700); 

function..like window.setTimeoutはを使用して、hideNotification関数にあなたの方法の遅延コールを削除する必要があり、この

window.clearTimeout(hideTimeout); 

を追加することができます

<script type="text/javascript"> 
Ext.onReady(function() { 
    hideNotification.defer(7000); 
}); 
var hideNotification = function() { 
    Ext.get('notification-bar').slideOut('t', {duration:0.5, easing:'easeOut'}); 
    Ext.get('notification-hide-button').setDisplayed(false); 
} 
$("#notification-hide-button").click(function() { 
    hideNotification(); 
}); 
</script> 

答えて

1

一度ボタンをクリックしてください..

+0

ありがとう - これはちょっと変わった後に働いた。私は窓を使う必要はなかった。またはvarを設定する必要はありませんでした。私は使用しました:hideTimeout = window.setTimeout(hideNotification、700);次に:clearTimeout(hideTimeout); – Voodoo

+0

あなたは実際にはvarキーワードを使う必要はありませんが、それはグローバル変数を作成していることを意味します。 つまり、これを追加する方が良いですが、ローカル変数を作成すると、オブジェクトが作成された場所。 これはあなたの問題だったかもしれませんが、あなたは可変的に変数にアクセスしようとしていましたが、varキーワードで他の関数に設定されていました。 – simekadam

関連する問題