Последовательность 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().