以下是代码
function mafunk(z){
if(z == 1){
$(".cloud").each(function(index, element) {
if(!$(this).attr('id')){
$(this).css("left", -20+'%');
$(this).next('a').css("left", -20+'%');
}
});
}
var x = (Math.random() * 10000) + 20000;
$('.cloud').animate({
left: '150%'
}, x, 'linear', mafunk(1));
}
mafunk(0);
我不知道我的代码出错的地方,基本上,我尝试动画的东西都有初始化位置,我无法改变。因此,我打电话给mafunk(0),以便它不会改变初始位置。动画结束后(当我动画的内容达到150%时),它会调用mafunk(1),因此函数会重新定位事物,因此他们已经准备好再次动画。
上面的代码让我的动画停止了,但是我通过inspect元素进行了检查,并且它们全部停留在左侧位置-20%,没有动画甚至一次。如果我删除回调" mafunk(1)",它会动画,但只有一次:/我在哪里出错?
答案 0 :(得分:5)
animate
期望一个函数作为最后一个参数,因此它可以调用它。
现在,你通过了mafunk(1)
。这不是一个函数,这是函数调用的结果,它是undefined
。你应该传递的是function(){ mafunk(1) }
。
更改此行
}, x, 'linear', mafunk(1));
到
}, x, 'linear', function(){ mafunk(1) });