Как использовать delay () с каждым ()? - PullRequest
1 голос
/ 13 июля 2011
$("#home #oneTool").prepend($(".userInfo.module"));

var topVal = $(".userInfo.module").height();
$(".userInfo.module").hide();
$(".userInfo.module").slideDown(3000);

$("#home #oneTool div.divspot").each(function(){
   var newVal = topVal + parseInt($(this).css('top'));
   $(this).css('top',newVal);
});

.userInfo.module присутствует прежде всего div.divspot s ...

Поскольку я использую slideDown, каждую функцию необходимо отложить, чтобы div.divspot s могтакже плавно опускается .. (задержка будет полезна?)

Примечание: Все div.divspot s абсолютно позиционированы

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Ну, во-первых, slideDown принимает в качестве параметра функцию, которую нужно вызвать после завершения. http://api.jquery.com/slideDown/

Попросите другого ответчика, который понял, о чем вы спрашивали, и #fail мне за неправильное чтение вашего вопроса.

При этом для метода, который не имеет обратного вызова после завершения, вот несколько вариантов.

Два варианта:

  1. Использовать очередь
  2. Использовать setTimeout

Использовать очередь:

http://api.jquery.com/queue/

$(".userInfo.module").fooThatTakes(3000).queue(function() {
  $("#home #oneTool div.divspot").each(function(){
    var newVal = topVal + parseInt($(this).css('top'));
    $(this).css('top',newVal);
  });
});

Использовать setTimeout.

var delay = 3000;
$(".userInfo.module").fooThatTakes(delay);
t = setTimeout(afterFoo, delay);

function afterFoo() {
  $("#home #oneTool div.divspot").each(function(){
    var newVal = topVal + parseInt($(this).css('top'));
    $(this).css('top',newVal);
  });
}
0 голосов
/ 13 июля 2011

Если я правильно понял ваш вопрос, то вы хотите запустить функцию each после завершения slideDown. Если это так, то вы можете использовать обратный вызов для функции slideDown:

$(".userInfo.module").slideDown(3000, function() {
    //Your each function
});

Обратный вызов будет запущен после завершения анимации.

...