2012-05-18 4 views
1

Я начинаю jquery уровня, и я настраиваю этот скрипт, но мне нужно его изменить. Я хочу иметь его так, чтобы при наведении стрелка перемещалась вправо 3px, а затем обратно в исходное положение слева. Все до выключения мыши.Как анимировать как обратный вызов другой функции анимации

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

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

<script type="text/javascript"> 

$(document).ready(function() { 
    var $red = $('#red'); 
    var $arrow = $('#arrow'); 
    $('#wording').hover(
     function() { 
     $red.animate({'width': 'toggle'}); 
     $arrow.css('color', 'white').delay(100).animate({'right': '-=3px'}, 'fast'); 
     }, function() { 
     $red.animate({'width': 'toggle'}); 
     $arrow.css('color', 'red').delay(100).animate({'right': '+=3px'}, 'fast'); 
    }); 
}); 

</script> 
+0

Вы можете создать пример в jsfiddle.net? –

+0

Просьба ознакомиться с этим: http://meta.stackexchange.com/a/5235/177581 –

ответ

2
$('#wording').on('mouseenter', function() { 
    $red.animate({'width': 'toggle'}); 
    $arrow.css('color', 'white').delay(100).animate({'right': '-=3px'}, 'fast', function(){ 
    $red.animate({'width': 'toggle'}); 
    $arrow.css('color', 'red').delay(100).animate({'right': '+=3px'}, 'fast'); 
    }); 
}); 

Обратный вызов передается в качестве третьего аргумента animate

+2

Я просто писала это! +1 к вам :-P Обратный вызов выполняется, когда 'animate' завершает –

+0

@MestekWebmaster Извините, человек. –

+0

Спасибо, много! Это именно то, что я пытался сделать. Я ценю помощь! – DC1