2009-07-30 20 views
5
$(this).css("left","100px"); 

function endless(){ 
    $(this).animate({ 
     left:'-=100px', 
    },{ 
     easing: "linear", 
    duration: 5000, 
    complete: function() { 
     $(this).css('left','100px'); 
    endless(); 
     } 
    }); 
}; 
endless(); 

これは私が試したものですが、このアプローチを使用すると、私は物事を動かすことができません。 Im 'jQuery 1.3.2を使用しています。 提案がありますか?jQueryで.animate関数を永久に実行するにはどうすればよいですか?

答えて

3

アニメーション化するパラメータが間違っています。オプションのハッシュはなく、イージング、継続時間、コールバックの実際のオプションだけが使用されます。また、thisを使用する場合は注意が必要です。無限の関数の引数として渡す方が良いです。

$(this).css("left","100px"); 

function endless(elem){ 
    $(elem).animate(
     { left:'-=100px' }, 
     "linear", 
     5000, 
     function() { 
      $(elem).css('left','100px'); 
      endless(elem); 
     } 
    ); 
}; 
endless(this); 
2

コールバック内からendless()を呼び出す必要があります。

function endless(item) { 
    $(item).animate({"left": "-=100px"}, 5000, "linear", function(){ 
    $(item).css("left","100px"); 
    endless(item); 
    }); 
} 

endless($(".myBox")); 
0

あなたがアニメーション化する要素のセレクターで$(this)を交換する必要があります。

0

素晴らしい!これはまさに私が検索したものですが、今、

私は最終的にどのようにトグルするかを考え出しました。アニメーションループを有効にするには、次の関数でエンドレス(0)を呼び出し、エンドレス(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) }); 

thanx初期コード用!

関連する問題