2010-09-20 112 views
2

这是我到目前为止。我想为功能spid()设置超时。如何设置此jQuery代码的超时时间?

<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); 
    }); 
}); 
+0

为' setInterval'&'setTimeout',请不要传递参数作为字符串。虽然这是正确的方式,但耗时'因为字符串再次需要解析 – 2010-09-20 16:41:55

+0

你能给我一个例子 – Noob 2010-09-20 16:42:31

+0

这不需要一个例子来解释,我猜你可以想起它 – 2010-09-20 16:49:20

回答

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

+0

它显示测试,测试,测试 – Noob 2010-09-20 17:06:52

+0

是的,这意味着代码工作正常。是不是=) – 2010-09-20 17:14:24

+0

是的,它的作品,但它剂量动画 – Noob 2010-09-20 17:15:48

0

你只需要传递一个函数。

setTimeout(spid,2000); 

或者你也可以使用setInterval