Анимация и удаление div-jquery
Я удаляю div из тела с эффектом затухания с задержкой.
$('#mydata div').each(function(i) {
$(this).delay(200*i).fadeOut(1000);
$(this).animate({
"opacity" : "0",
});
});
$('#mydata').remove();
Но если я использую $('#mydata').удалить () анимацию не работает никаких решений .. ?
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. });
Comments