$("#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
绝对定位
答案 0 :(得分:1)
首先,slideDown将一个函数作为参数,在完成后调用。 http://api.jquery.com/slideDown/
向另一个回答问题的回答者说道,因为他没有正确地阅读你的问题,所以我意识到你在问什么,而#fail给了我。
话虽如此,对于一个完成后没有回调的方法,这里有几个选项。
两个选项:
使用队列:
$(".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
});
回调将在完成动画后运行。