¿Cómo ejecuto la función .animate en jQuery para siempre?
-
05-07-2019 - |
Pregunta
$(this).css("left","100px");
function endless(){
$(this).animate({
left:'-=100px',
},{
easing: "linear",
duration: 5000,
complete: function() {
$(this).css('left','100px');
endless();
}
});
};
endless();
Esto es lo que intenté, pero con este enfoque no puedo hacer que las cosas se muevan. Estoy usando jQuery 1.3.2. ¿Alguna sugerencia?
Solución
Tienes los parámetros para animar mal. No se necesita un hash de opciones, solo las opciones reales para facilitar, la duración y una devolución de llamada. Además, debe tener cuidado al usar this
. Es mejor pasarlo como un argumento a la función sin fin.
$(this).css("left","100px");
function endless(elem){
$(elem).animate(
{ left:'-=100px' },
"linear",
5000,
function() {
$(elem).css('left','100px');
endless(elem);
}
);
};
endless(this);
Otros consejos
Tendrá que llamar a endless () desde una devolución de llamada.
function endless(item) {
$(item).animate({"left": "-=100px"}, 5000, "linear", function(){
$(item).css("left","100px");
endless(item);
});
}
endless($(".myBox"));
Debe reemplazar $ (this)
con el selector al elemento que desea animar.
¡Genial! esto es exactamente lo que busqué, pero ahora,
finalmente me di cuenta de cómo cambiarlo. con la siguiente función, llame a endless (0) para detener, y endless (1) para habilitar el bucle de animación.
//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) });
¡Gracias por el código inicial!