Анимация и удаление div-jquery



Я удаляю div из тела с эффектом затухания с задержкой.

$('#mydata div').each(function(i) {                 

        $(this).delay(200*i).fadeOut(1000);
            $(this).animate({
                "opacity" : "0",
            });

    });
    $('#mydata').remove();

Но если я использую $('#mydata').удалить () анимацию не работает никаких решений .. ?

102   5  

5 ответов:

Что-то вроде этого:

$('#mydata div').each(function(i) {                 

        $(this).delay(200*i).fadeOut(1000);
            $(this).animate({
                "opacity" : "0",
                },{
                "complete" : function() {
                      $('#mydata').remove();
                }
            });

    });

Вам нужно сделать так, чтобы удаление произошло после завершения анимации. Это может быть добавлено в Вызов animate() как параметр on complete (функция, которая будет вызвана, когда анимация закончится):

 $(this).animate({
         "opacity" : "0", //property
         1000, //duration of animation (optional)
         function(){$('#mydata').remove();} //function to run on complete (optional)
 });

Вы можете прочитать больше в jQuery API

Если вы не возражаете против того, чтобы div все еще был в DOM, вы можете скрыть его , что более просто:

$('#mydata').hide();

И вы также можете указать скорость и тип анимации

Вы удаляете родительский элемент до того, как дочерние элементы исчезнут.

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

$('#mydata div').each(function(i) {
    $(this).delay(200*i)
        .fadeOut(1000)
        .animate({
           "opacity" : "0",
        },
        function() {
            $(this).remove();
            if($("#mydata div").length == 0) {
                $("#mydata").remove();
            }
        });
});

Небольшой мод на Bens answer работает для меня..

$( "#book" ).animate({
    opacity: 0.25,
    left: "+=50",
    height: "toggle"
}, 5000, function() {
      // Animation complete.
});
    Ничего не найдено.

Добавить ответ:
Отменить.