Comment puis-je exécuter la fonction .animate dans jQuery pour toujours?
-
05-07-2019 - |
Question
$(this).css("left","100px");
function endless(){
$(this).animate({
left:'-=100px',
},{
easing: "linear",
duration: 5000,
complete: function() {
$(this).css('left','100px');
endless();
}
});
};
endless();
C'est ce que j'ai essayé, mais avec cette approche, je ne peux pas faire bouger les choses. J'utilise jQuery 1.3.2. Des suggestions?
La solution
Vous avez les paramètres pour animer mal. Cela ne prend pas un hachage d’options, mais seulement les options réelles d’assouplissement, de durée et de rappel. De même, vous devez faire attention lorsque vous utilisez this
. Mieux vaut le passer comme argument de la fonction sans fin.
$(this).css("left","100px");
function endless(elem){
$(elem).animate(
{ left:'-=100px' },
"linear",
5000,
function() {
$(elem).css('left','100px');
endless(elem);
}
);
};
endless(this);
Autres conseils
Vous devrez appeler endless () à partir d'un rappel.
function endless(item) {
$(item).animate({"left": "-=100px"}, 5000, "linear", function(){
$(item).css("left","100px");
endless(item);
});
}
endless($(".myBox"));
Vous devez remplacer $ (this)
par le sélecteur d'élément que vous souhaitez animer.
Génial! c'est exactement ce que je cherchais, mais maintenant,
J'ai enfin compris comment le basculer. avec la fonction suivante, appelez sans fin (0) pour arrêter et sans fin (1) pour activer la boucle d’animation.
//loop animation forever
//args: takes 1 to loop, 0 to stop
function endless(loop)
{
//animate forever
if (loop==1)
{
$('#alink').animate(
{'opacity':'toggle'},
1000,
function () { endless(1) }
);
}
//stop animation
else
{
$('#alink').css('opacity',1).stop();
}
};
//sample call
$('#alink').toggle(function(){ endless(1) },function(){ endless(0) });
merci pour le code initial!