2013-07-16 4 views
0

Мне нужно что-то выполнить (допустим, предупреждение) после завершения анимации и слайдов. С помощью моего текущего метода предупреждение запускается после анимации и после слайд-шоу.jQuery: когда .animate.slideUp завершено

Вот код я использую:

$(this).siblings() 
     .find("ul") 
     .animate({width:'1px'}, 1) 
     .slideUp(1, function(){ 
      alert("Handler for called."); 
     }); 

Кстати -это там лучший способ установить обратно ширину исходной 1px и «отменить» slideDown, чем с тем, как я это сделал выше?

Спасибо!

+0

Так что вы хотели бы, чтобы стрелять предупреждение два раза, по одному для каждой анимации? – adeneo

+0

вы можете поделиться html, а также как этот метод будет выполнен, это приведет к обратному вызову после 'slideUp' –

+0

Если вы получаете более одного предупреждения, это потому, что' $ (this) .siblings() 'может возвращать больше, чем 1 элемент –

ответ

0
$(document).ready(function() { 
    $("#nav li:has(ul)").hover(function() { 
     $(this).siblings().find("ul").stop(true, true).animate({ 
      width: '1px' 
     }, 1).slideUp(1); 
     $(this).find("ul").slideDown().animate({ 
      width: '300px' 
     }, 350); 

    }); 

}); 

DEMO

+0

Спасибо за вашу помощь - он также срабатывает дважды в моем примере; Наверное, это потому, что есть два брата и сестры. Я загрузил его, чтобы показать, в чем проблема. Вместо предупреждения я использую slideDown и анимировать сейчас. Я не хочу показывать два подменю одновременно, поэтому, когда есть одно подменю, все остальные подменю должны быть удалены с помощью функции, ПОСЛЕВЫЕ, появится новое текущее подменю. Вот ссылка: http://jsfiddle.net/hausmaster/93reJ/12/ Спасибо! – user1658080

+0

Посмотрите, если обновленный ответ соответствует вашим потребностям, иначе я не вижу то, что вы ищете –

+0

Большое спасибо! Это оно! :-) – user1658080

0

Используйте функцию обратного вызова также для функции одушевленным:

Жизнь демо: http://jsfiddle.net/gawuQ/

var myList = $(this).siblings().find("ul"); 

myList.animate({ 
    width: '1px' 
}, 1, function() { 
     myList.slideUp(1, function() { 
     alert("Handler for called."); 
    }); 
}); 

Жизнь демо: http://jsfiddle.net/gawuQ/

+0

Большое спасибо - я задал проблему в ответе от «жареного». – user1658080

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