Предотвращение дублирования анимации jquery при срабатывании по клику и через определенное время - PullRequest
0 голосов
/ 28 января 2012

У меня есть панель уведомлений, которая появляется в верхней части страницы, а затем выполняет слайд-аут через xx секунд.У меня также есть значок, который можно щелкнуть, чтобы ускорить слайд-аут.

Проблема в том, что при нажатии кнопки анимация происходит дважды.Исчезает при щелчке, затем через xx секунд появляется и снова выполняет слайд-аут.

Я полагаю, мне нужно написать это по-другому, чтобы связать события?Или мне нужно добавить оператор if?

<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 Ответ

1 голос
/ 28 января 2012

вы можете просто использовать функцию window.setTimeout .. вот так

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

и затем добавьте к функции hideNotification это

window.clearTimeout(hideTimeout);

, который должен удалить отложенный вызов вашего метода после нажатия кнопки ..

...