JQuery: как скрыть div после анимации? - PullRequest
2 голосов
/ 02 апреля 2012

Я бы хотел скрыть погружение после анимации. Возможно ли это?

Я могу показать вам код здесь

$(document).ready(function() {
  $('button').click(function() {
    var $lefty = $(this).next();
    $lefty.animate({
      left: parseInt($lefty.css('left'),10) == 0 ?
        -$lefty.outerWidth() :
        0
    });
  });
});​

Демо

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Передайте обратный вызов animate в качестве второго аргумента. Кроме того, вам нужно изменить .next() на что-то другое, чтобы найти только первого потомка, и есть несколько других оптимизаций, которые можно сделать. Ваш CSS тоже не прав. Вот обновленный jsFiddle.

$(document).ready(function() {
    $('button').click(function() {
        var $lefty = $(this).next().children().eq(0);

        $lefty.animate({
            left: -$lefty.outerWidth()
        }, function() {
            $lefty.next().show();
            $lefty.remove();
        });
    });
});​
1 голос
/ 02 апреля 2012

В качестве четвертого параметра animate может выполнить обратный вызов для выполнения при завершении.В качестве альтернативы, просто используйте атрибут complete в вашем объекте опций.

$(document).ready(function () {
    $('button').click(function () {
        var $lefty = $(this).next();
        $lefty.animate({
            left: (parseInt($lefty.css('left'), 10) == 0 ? -$lefty.outerWidth() : 0),
            complete: function () {
                /* Do hide here */
            }
        });
    });
});

Спрячьте в нем div, возможно, вызвав hide() on this.

0 голосов
/ 02 апреля 2012

Вы можете передать обратный вызов для вызова при завершении:

$(document).ready(function() {
  $('button').click(function() {
    var $lefty = $(this).next();
    $lefty.animate({
      left: parseInt($lefty.css('left'),10) == 0 ?
        -$lefty.outerWidth() :
        0
    }, function () {
      $lefty.hide();
    });
  });
});​
...