Как сделать что-то в JQuery после анимации Finish ()

У меня есть эта функция для перемещения абсолютного DIV, и я хочу выполнить функцию setTimeout. Однако JQuery выпрыгивает из функции hover (), когда дело доходит до строки $ (). Finish (). Как мне выполнить что-то после финиша ()?

$('#header li[class!="logo"]').hover(function () { var leftStart = $(this).position().left; var width = ($(this).width() / 2) - 22; $('#header .pointerarrow').animate({ left: leftStart + width }, 400); }, function () { $('#header .pointerarrow').finish(); //######This does not excecute########### setTimeout(function () { alert('succeeded'); var l = $('#header li[class="current"]').position().left; var b = ($('#header li[class="current"]').width() / 2) - 22; $('#header .pointerarrow').css({ left: l + b }); }, 500); }); 

 $('#header .pointerarrow').animate( { left: linksstart + breedte }, 400, function() { // Animation complete. }); 

Что бы вы хотели выполнить после полной анимации, напишите внутри функционального блока.

Попробуй это:

 $('#header .pointerarrow').animate({ left: linksstart + breedte }, 400); $('#header .pointerarrow').promise().done(function(){ /* PUT FUNCTION HERE */ }); 

Надеюсь, это поможет!

Я решил свой вопрос таким образом (поставив функцию таймаута перед финишем () и очистив тайм-аут, если пользователь наведет другой наведение)

 var time = null; $('#header li[class!="logo"]').hover(function () { window.clearTimeout(time); var linksstart = $(this).position().left; var breedte = ($(this).width() / 2) - 22; $('#header .pointerarrow').animate({ left: linksstart + breedte }, 300); }, function () { time = setTimeout(function () { //alert('gelukt2'); var l = $('#header li[class="current"]').position().left; var b = ($('#header li[class="current"]').width() / 2) - 22; $('#header .pointerarrow').animate({ left: l + b }, 300); }, 400); $('#header .pointerarrow').finish(); }); 

Это поможет вам,

 $('#header li[class!="logo"]').hover(function () { var linksstart = $(this).position().left; var breedte = ($(this).width() / 2) - 22; $('#header .pointerarrow').animate({ left: linksstart + breedte }, 400,function(){ //animation complete, alert('gelukt2'); var l = $('#header li[class="current"]').position().left; var b = ($('#header li[class="current"]').width() / 2) - 22; $('#header .pointerarrow').css({ left: l + b }); }); }, function () { $('#header .pointerarrow').finish(); });