Как я могу запустить функцию .animate в jQuery навсегда? - PullRequest
5 голосов
/ 30 июля 2009
$(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. Есть предложения?

Ответы [ 4 ]

3 голосов
/ 30 июля 2009

У вас есть параметры, чтобы анимировать неправильно. Он не требует хэша опций, а только фактических опций для замедления, продолжительности и обратного вызова. Также вам необходимо соблюдать осторожность при использовании this. Лучше передать это как аргумент бесконечной функции.

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

function endless(elem){
    $(elem).animate(
        { left:'-=100px' },
        "linear",
        5000,
        function() {
            $(elem).css('left','100px');
            endless(elem);
        }
     );
};
endless(this);
2 голосов
/ 30 июля 2009

Вам необходимо вызвать endless () из-за обратного вызова.

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

endless($(".myBox"));
0 голосов
/ 10 июля 2010

Отлично! это именно то, что я искал, но сейчас

Я наконец понял, как его переключить. со следующей функцией вызовите 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) });

Спасибо за исходный код!

0 голосов
/ 30 июля 2009

Вам необходимо заменить $(this) селектором на элемент, который вы хотите анимировать.

...