2012-02-08 1 views
0

Я использую JQuery-UI. Я хочу начать новый эффект до того, как текущий закончен. Является ли это возможным?Обратный звонок до окончания эффекта?

В настоящее время я использую что-то вроде этого кода:

div1.hide({ 
     duration: 1000, 
     easing: 'easeOutQuint', 
     effect: 'drop', 
     direction : 'up' 
    }); 
    div1.promise().done(function(){ 
     div2.show(); 
    }); 

Спасибо!

Редактировать: Я бы хотел избежать таймеров, если это возможно.

ответ

2

Вы можете сделать это просто с помощью setTimeout():

div1.hide({ 
    duration: 1000, 
    easing: 'easeOutQuint', 
    effect: 'drop', 
    direction : 'up' 
}); 
setTimeout(function(){ 
    div2.show(); 
}, 900); 

выше будет эффективно начать div2.show() приближенно минимаксного 100 милисекунд до продолжительности div1.hide() концов (в других слова: 900 миллисекунд после начала анимации 1000 миллисекунд).

+0

Спасибо - похоже, я пытался перекомпилировать его с отложенным объектом, когда это очень просто и просто. – johnjohn

+0

@johnjohn: Добро пожаловать. – Tadeck

0

Вы можете отменить текущий эффект с помощью $.stop()

+0

Мне бы хотелось, чтобы оба эффекта работали, а второй запускался в какой-то момент после первого запуска - извините, что не уточнил это лучше. – johnjohn

+1

без проблем ... setTimeout() позаботится об этом как @Tadeck. – SliverNinja

 Смежные вопросы

  • Нет связанных вопросов^_^