Порядок событий jQuery и ожидание завершения анимации
У меня есть анимация ползунка, но на событии clX.click #close div скрывается до того, как оно будет анимировано, осталось 250 пикселей Как дождаться завершения анимации, а затем скрыть #close div?
$(document).ready(function() {
$("#open").click(function() {
if ($("#close").is(":hidden")) {
$("#open").animate({
marginLeft: "-32px"
}, 200);
$("#close").show();
$("#close").animate({
marginLeft: "250px"
}, 500);
}
});
$("#clX").click(function() {
$("#close").animate({
marginLeft: "-250px"
}, 500);
$("#open").animate({
marginLeft: "0px"
}, 200);
$("#close").hide();
});
});
2 ответа
Решение
Вы можете добавить функцию обратного вызова для анимации. Он будет запущен после завершения анимации.
$('#clX').click(function() {
$('#close').animate({
marginLeft: "-250px"
}, 500, function() {
// Animation complete.
$("#close").hide();
//i supose $this.hide() <br/>would work also and it is more efficient.
});
});
@hasan, methinks @patxi означало $(это)
var closeable = $('#close');
$('#clx').bind('click', function(){
// $(this) === $('#clx')
closeable.stop().animate({marginLeft:'-250px'},{
duration: 500,
complete: function(){
$(this).hide();
// $(this) === closeable;
}
});
});