2013-05-09 3 views
0

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

Когда элемент перевернут, всплывающее окно скользит вниз и исчезает. Когда оно выкачивается, всплывающее окно скользит дальше и исчезает, а затем, когда оно скрыто, сбрасывается в исходное положение.

Вот мой код:

$('*:has(.rollover)').hover(function(){ 
    $('.rollover',this).fadeIn('fast').animate({ 
    'top' : '60px', 
    }, {duration: 'fast', queue: false}, function() {}); 
},function(){ 
    $('.rollover',this).fadeOut('fast').animate({ 
    'top' : '70px', 
    }, {duration: 'fast', queue: false}, function() { 
    console.log("hello"); 
    $(this).css('top','50px'); 
    }); 
}); 

Проблема заключается в последней строке, где top является сброс не срабатывает, и ни в заявлении журнала. Почему это?

+0

Прикрепление обработчика событий к любому элементу, который имеет элемент с классом .rollover вероятно, означает, что событие прилагается почти каждый элемент на странице, который звучит как действительно плохая идея. И вы можете упростить это с помощью чего-то вроде этого [** FIDDLE **] (http://jsfiddle.net/Pmbr8/) – adeneo

+0

@adeneo Я использую '*: has (.rollover)' для выбора всех элементов, которые имеют '.rollover' как непосредственный ребенок, это неправильно? – fredley

+0

Этот селектор выберет любой элемент, который содержит по крайней мере один элемент, который соответствует указанному селектору, но не ограничивается непосредственными дочерними элементами. Другими словами, любой элемент, который имеет внутри него элемент с классом .rollover, и это, вероятно, примерно каждый элемент на странице. – adeneo

ответ

0

Моя ошибка, имеющая:

, {duration: 'fast', queue: false}, function() {}); 

Когда я должен был:

, {duration: 'fast', queue: false, complete : function() {}}); 
Смежные вопросы