Последовательность jquery fadeOut и затем удалите
Я пытаюсь $('somediv').fadeOut.remove();
но он только удаляет его, bang... он не ждет хорошего fadeOut, а THEN удаляет
почему.. как уважать затухание, а затем удалять..
Ответы
Ответ 1
Использовать обратный вызов:
$('somediv').fadeOut( function() { $(this).remove(); });
Код в функции обратного вызова, который вы передаете fadeOut()
(docs), не будет выполняться до завершения анимации.
Пример: http://jsfiddle.net/p2LWE/
Альтернативой может быть queue()
(docs) remove()
(docs), но я думаю, что обратный вызов лучше.
$('somediv').fadeOut()
.queue(function(nxt) {
$(this).remove();
nxt();
});
Ответ 2
Вот простой способ,
$('#somediv').fadeOut(300,function(){ $(this).remove(); })};
или
$('#somediv').fadeOut("slow",function(){ $(this).remove(); })};
Ответ 3
С помощью цепочки jQuery одна часть цепочки не ждет завершения других частей, если есть компонент, основанный на времени. Поэтому, когда вы хотите, чтобы что-то случилось, когда закончилась другая вещь, вам нужно будет использовать обратные вызовы. В этом случае вы вызываете fadeOut()
с параметром для запуска какой-либо функции. Например:
$('#somediv').fadeOut(function(){ $(this).remove(); })};
Итак, когда fadeOut()
выполняется (и вы можете добавить главный параметр, который определяет, сколько времени потребуется, либо в милисекундах, либо "быстро", "нормальном" или "медленном" ), это вызовет функция, которая выполняет remove()
.