0

我有一个完美运行的脚本:

<script>
function aller(){
$('#container').animate({marginLeft : '0px'}, {duration:1});
retour();
}

function boucle(){
$('#container').animate({marginLeft : '0px'}, {duration:4000});
retour();
}

function retour(){
//Modify marginLeft value if needed
$('#container').animate({marginLeft : -400}, {duration:4000});
boucle();
}
</script>

但是当我通过我需要的变量更改左边距“-400”时:

$('#container').animate({marginLeft : $('.Image img:last').position().left}, {duration:4000});

网页加载很慢,我真的不明白,因为当我检查他是否找到值时,它直接找到它(通过写

alert($('.Image img:last').position().left);

举个例子)

我不知道它在加载什么,因为他知道价值!

html部分:

<body onLoad="aller();">
<div id="cont">
<div id="container">
    <div id="images" >
        <div class="Image"><img src="./Images/richard.jpg"/><div>
        <div class="Image"><img src="./Images/ivanovic.jpg"/><div>
    </div>
</div>

谢谢 !

4

2 回答 2

2

你的问题在这里......你正在调用retour()里面的函数,然后再次boucle(),调用retour(),等等无限......

function boucle(){
$('#container').animate({marginLeft : '0px'}, {duration:4000});
retour();
}

function retour(){
//Modify marginLeft value if needed
$('#container').animate({marginLeft : -400}, {duration:4000});
boucle();
}

这会导致无限循环.....从而减慢您的页面爬行速度

不确定这是否是您正在谈论的问题,但这绝对是您需要解决的问题.. :)

于 2013-06-17T20:48:57.227 回答
0

看起来您想调用retour(),然后boucle()在其动画完成时调用它,依此类推。animate()但是在安排动画之后,调用会立即返回。您要做的是将另一个函数注册为完成时的回调:

$('#container').animate({marginLeft : -400}, {duration:4000, complete:retour});
于 2013-06-17T20:54:55.530 回答