如何在每个()中使用delay()?

时间:2011-07-13 06:36:41

标签: javascript jquery css delay slidedown

$("#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绝对定位

2 个答案:

答案 0 :(得分:1)

首先,slideDown将一个函数作为参数,在完成后调用。 http://api.jquery.com/slideDown/

向另一个回答问题的回答者说道,因为他没有正确地阅读你的问题,所以我意识到你在问什么,而#fail给了我。

话虽如此,对于一个完成后没有回调的方法,这里有几个选项。

两个选项:

  1. 使用队列
  2. 使用setTimeout
  3. 使用队列:

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

答案 1 :(得分:0)

如果我已正确理解您的问题,那么您希望在each完成后运行slideDown功能。如果这是正确的,那么您可以使用slideDown函数的回调:

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

回调将在完成动画后运行。