如何为此jQuery代码设置超时?

时间:2010-09-20 16:23:03

标签: jquery animation

这是我到目前为止所拥有的。我想为函数spid()设置超时。

<script type="text/javascript">

$(document).ready(function() {  
    $("#spid").animate({top: '-110px' }, 600, 'easeOutBounce',
    function spid() {
       $(this).animate({top:"-=20px"},1000).animate({top:"+=20px"},1000);
       setTimeout("spid()",2000);
    });
});

2 个答案:

答案 0 :(得分:0)

你只需要传递一个函数。

setTimeout( spid,2000 );

或者您也可以使用setInterval

答案 1 :(得分:0)

$(function() {
    $("#spid").animate({top: '190px' }, 600,'linear' ,function() {
        (function spid() { 
            console.log('Test'); 
            $(this).animate({top:"+=20px"},1000).animate({top:"+=20px"},1000);
            setTimeout(spid,2000);
        })();   
    });
});

上述代码中的this存在问题,下面的代码段工作正常

修改

$(function() {
  $("#spid").animate({top: '110px' }, 600,'linear' ,function() {
    var cache = $(this);
    (function spid() {
      cache.animate({top:"+=20px"},1000).animate({top:"-=20px"},1000);
      setTimeout(spid,2000);
    })();  
  });
});

请测试代码 http://jsbin.com/elaxa3