2013-04-12 3 views
2

мой JQuery Код:JQuery анимации с setinterval

$(document).ready(function(){ 
     setinterval(function(){ 
     $("#animate").animate({'margin-left':'50px'},1000) 
     $("#animate").animate({'margin-left':'-50px'},1000) 
     },2000); 

     }); 

HTML:

<div id="animate">sdfdsfdsfsdfsdfds</div> 

я хочу сделать анимацию, которая будет идти через каждые 5 сек. Что не так ? Спасибо!

+0

У вас возникли проблемы? – SLaks

+1

2000 = 2 секунды. Это первое, что неправильно. –

+1

* Никогда * используйте 'setInterval()' с анимацией; это приведет только к провалу. –

ответ

8

Мое предпочтительное решение. Таким образом, ваша анимация будет на 100% действительно синхронной и не будет страдать от дублирования анимаций. Поверьте мне, в то время как другие ответы используют setInterval(), и это выглядит так, как будто это работает, эти решения необъяснимо проваливаются после достаточного количества итераций из-за асинхронного характера javascript. Кроме того, он только один DOM ищет элемент и делает его объектом jQuery только один раз.

jQuery(function($){ 
    (function swoop(element) { 
     element 
      .animate({'margin-left':'50px'}, 1000) 
      .animate({'margin-left':'-50px'}, 1000, function(){ 
       setTimeout(function(){ 
        swoop(element); 
       }, 5000); 
      }); 
    })($('#animate')); 
}); 
+0

Даже если это может смутить тех, кто только начинается с JS, я бы рекомендовал это как лучший ответ. Как сказал Брэд, использование timeInterval с анимацией всегда заканчивается тем, что вызывает перекрытие и побочные эффекты, потому что в конечном итоге синхронизация времени отключается. –

Смежные вопросы