Порядок событий jQuery и ожидание завершения анимации - PullRequest
7 голосов
/ 09 марта 2010

У меня есть анимация ползунка, но в событии 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 ]

11 голосов
/ 09 марта 2010

Вы можете добавить функцию обратного вызова для анимации. Он будет запущен после завершения анимации.

$('#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.
  });
});
4 голосов
/ 02 августа 2010

@ hasan, methinks @patxi означало $ (this)

var closeable = $('#close');
$('#clx').bind('click', function(){
   // $(this) === $('#clx')
   closeable.stop().animate({marginLeft:'-250px'},{
     duration: 500,
     complete: function(){
        $(this).hide(); 
        // $(this) === closeable;
     }
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...