Подтвердить что ты не робот

Почему я не могу отложить удаление вызова с помощью jQuery

Я хотел бы, чтобы div был fadeOut, а затем удалялся:

 $('#div').delay(1000).fadeOut(300);
 $('#div').delay(1300).remove();

К сожалению, это просто удаляет div без каких-либо задержек. Почему я не могу заставить действие удаления задерживаться? Какие существуют решения?

Спасибо

4b9b3361

Ответ 1

Если вы хотите, чтобы элемент был удален после его исчезновения, вы можете fadeOut параметр обратного вызова.

$('#div').delay(1000).fadeOut(300, function(){
   $(this).remove();
});

Ответ 2

.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();
});

Ответ 3

Вы можете попробовать что-то вроде этого.

$('#div').delay(1000).fadeOut(300,function(){
    setTimeout(function(){
      $('#div').remove()
    } ,1300);

});

Я думаю, что он работает так, как должен. Надеюсь, что это поможет.