Ответ 1
Если вы хотите, чтобы элемент был удален после его исчезновения, вы можете fadeOut
параметр обратного вызова.
$('#div').delay(1000).fadeOut(300, function(){
$(this).remove();
});
Я хотел бы, чтобы div был fadeOut, а затем удалялся:
$('#div').delay(1000).fadeOut(300);
$('#div').delay(1300).remove();
К сожалению, это просто удаляет div без каких-либо задержек. Почему я не могу заставить действие удаления задерживаться? Какие существуют решения?
Спасибо
Если вы хотите, чтобы элемент был удален после его исчезновения, вы можете fadeOut
параметр обратного вызова.
$('#div').delay(1000).fadeOut(300, function(){
$(this).remove();
});
.delay()
работает только с методами, проходящими через очередь анимации. Таким образом, он работает для .fadeOut()
(анимация), но не .remove()
(а не анимация).
Чтобы показать, насколько это специализировано, это не задерживается:
$('#div').delay(1000).hide();
Но это означает:
$('#div').delay(1000).hide(1);
Полагая продолжительность метода hide, он превращается в анимацию, которая затем использует очередь анимации, которая затем работает с .delay()
.
Чтобы удалить элемент с задержкой, вы можете использовать вызов setTimeout()
:
setTimeout(function() {
$('#div').remove();
}, 1300);
или немного запутаться и использовать функцию завершения анимации следующим образом:
$('#div').delay(1000).hide(1, function() {
$(this).remove();
});
Вы можете попробовать что-то вроде этого.
$('#div').delay(1000).fadeOut(300,function(){
setTimeout(function(){
$('#div').remove()
} ,1300);
});
Я думаю, что он работает так, как должен. Надеюсь, что это поможет.