Я пытаюсь анимировать логотип, когда вы наведите указатель мыши на элемент привязки. Когда я нависаю над логотипом, изображение должно идти вверх, а другое - вниз, когда первый выполняется. Когда мышь уходит, он должен наоборот, текущий элемент (2-й) должен идти вверх, а когда он ушел, первый элемент должен идти вниз.jQuery анимация для зависания
Я знаю, как оживить это, однако у меня возникают проблемы, когда я нахожусь очень быстро над моим опорным элементом. Иногда оба изображения (1 2nd появляются) и т. Д.
Это то, что у меня уже есть, как я должен делать это правильно?
function logoAnimation() {
var logo = jQuery('#logo a');
var house = jQuery('#logo_icon_house');
var brush = jQuery('#logo_icon_brush');
var inHandler = function() {
logo.unbind('mouseleave', outHandler);
brush.animate({
"top": "-27px"
}, 250, function(){
house.animate({
"top": "42px"
}, 250,function(){
logo.bind('mouseleave', outHandler);
});
}
);
}
var outHandler = function() {
logo.unbind('mouseenter', inHandler);
house.animate({
"top": "-21px"
}, 250, function() {
brush.animate({
"top": "39px"
}, 250,function(){
logo.bind('mouseenter', inHandler);
});
});
}
logo.mouseenter(inHandler).mouseleave(outHandler);
}
после правильного ответа на мой вопрос, мне удалось решить эту проблему с помощью следующего кода:
function logoAnimation() {
var logo = jQuery('#logo a');
var house = jQuery('#logo_icon_house');
var brush = jQuery('#logo_icon_brush');
var inHandler = function() {
if(brush.is(':animated')) {
return;
}
brush.stop(true,true).animate({
"top": "-27px"
}, 250, function(){
if(house.is(':animated')) {
return;
}
house.animate({
"top": "42px"
}, 250);
}
);
}
var outHandler = function() {
house.stop(true,true).animate({
"top": "-21px"
}, 250, function() {
if(brush.is(':animated')) {
return;
}
brush.animate({
"top": "39px"
}, 250);
});
}
logo.mouseenter(inHandler).mouseleave(outHandler);
}
спасибо, вы указали мне в очень правильном направлении. – Ayrton