2017-10-07 88 views
0
 function slideRight() { 


      // slide to right 
      $("div").animate({ 
       left: "200px" 
      }, 2000, function() { 
       slideLeft(); 
      }); 
     } 

     function slideLeft() { 

      // slide to left 
      $("div").animate({ 
       left: "0px" 
      }, 2000, function() { 
       slideRight(); 
      }); 
     } 
     $(document).ready(function() { 
      $("#start").on("click", function() { 
       slideRight(); 
      }); 
     }); 

我有两个div,我想在同一时间来回移动它们。jquery动画卡住

<div style="top:100px;"></div> 
    <div style="top:300px;"></div> 

CSS代码:

 div { 
      background: yellow; 
      height: 100px; 
      position: absolute; 
      width: 100px; 
      left:0px;} 

然而,动画卡住,成为每张幻灯片后慢得多。一格就可以了。越多divs,时间越久。为什么?

回答

0

我认为问题是,你的函数调用自己内部另一个动画函数与永无止境的循环,导致每次调用延迟。相反,我正在停止第二个函数的循环,并重新启动超时,这会中断循环并延迟并再次启动。 DEMO

1

尝试添加类似:

$("div").stop().dequeue().animate({ 
    ...