Come posso eseguire la funzione .animate in jQuery per sempre?
-
05-07-2019 - |
Domanda
$(this).css("left","100px");
function endless(){
$(this).animate({
left:'-=100px',
},{
easing: "linear",
duration: 5000,
complete: function() {
$(this).css('left','100px');
endless();
}
});
};
endless();
Questo è quello che ho provato, ma usando questo approccio non riesco a far muovere le cose. Sto usando jQuery 1.3.2. Qualche suggerimento?
Soluzione
Hai i parametri per animare in modo errato. Non richiede un hash di opzioni, ma solo le opzioni effettive per allentamento, durata e richiamata. Inoltre, è necessario prestare attenzione quando si utilizza this
. Meglio passarlo come argomento alla funzione infinita.
$(this).css("left","100px");
function endless(elem){
$(elem).animate(
{ left:'-=100px' },
"linear",
5000,
function() {
$(elem).css('left','100px');
endless(elem);
}
);
};
endless(this);
Altri suggerimenti
Dovrai chiamare infinite () dall'interno di una richiamata.
function endless(item) {
$(item).animate({"left": "-=100px"}, 5000, "linear", function(){
$(item).css("left","100px");
endless(item);
});
}
endless($(".myBox"));
Devi sostituire $ (this)
con il selettore per l'elemento che vuoi animare.
Grande! questo è esattamente quello che ho cercato, ma ora
Finalmente ho capito come attivarlo. con la seguente funzione, chiama infinito (0) per interrompere e infinito (1) per abilitare il ciclo di animazione.
//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) });
grazie per il codice iniziale!