jQueryで.animate関数を永久に実行するにはどうすればよいですか?
-
05-07-2019 - |
質問
$(this).css("left","100px");
function endless(){
$(this).animate({
left:'-=100px',
},{
easing: "linear",
duration: 5000,
complete: function() {
$(this).css('left','100px');
endless();
}
});
};
endless();
これは私が試したものですが、このアプローチを使用すると、物事を動かすことができません。 私はjQuery 1.3.2を使用しています。 提案はありますか?
解決
間違ったアニメーションを作成するパラメーターがあります。オプションハッシュは使用せず、イージング、期間、およびコールバックの実際のオプションのみを使用します。また、 this
を使用するときは注意が必要です。 endless関数の引数として渡す方が良い。
$(this).css("left","100px");
function endless(elem){
$(elem).animate(
{ left:'-=100px' },
"linear",
5000,
function() {
$(elem).css('left','100px');
endless(elem);
}
);
};
endless(this);
他のヒント
コールバック内からendless()を呼び出す必要があります。
function endless(item) {
$(item).animate({"left": "-=100px"}, 5000, "linear", function(){
$(item).css("left","100px");
endless(item);
});
}
endless($(".myBox"));
$(this)
を、アニメーション化する要素のセレクターに置き換える必要があります。
すばらしい!これはまさに私が検索したものですが、今では
iは最終的に切り替え方法を考え出しました。次の関数で、endless(0)を呼び出して停止し、endless(1)を呼び出してアニメーションループを有効にします。
//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) });
初期コードをありがとう!
所属していません StackOverflow