2012-07-17 66 views
0

我试图推迟一个函数,我有一个jQuery脚本启动。我提出了settimeout,但由于某种原因它没有采取,它打破了脚本的其余部分。在此先感谢您提供的任何帮助。推迟功能之前,它启动不起作用

JS

<script type="text/javascript"> 
    $(function() { 
     $("#fullscreen_launch").click(function() { 
      $("#fullscreen").animate({ 
       height: '100%', 
       top: '0px', 
      }, 950, setTimeout(function() { 
       $('#fullscreen').load('http://www.klossal.com/portfolio/space_fullscreen.html'); 
      }, 2000); 
      }); 
     }); 
    }); 
</script> 

回答

2

animate最后一个参数是一个回调。 setTimeout不返回函数,它返回一个timeoutID(用于clearTimeout)。您需要将一个函数传递给animate

$(function() { 
    $("#fullscreen_launch").click(function() { 
     $("#fullscreen").animate({ 
      height: '100%', 
      top: '0px', 
     }, 950, function() { 
      setTimeout(function() { 
       $('#fullscreen').load('http://www.klossal.com/portfolio/space_fullscreen.html'); 
      }, 2000); 
     }); 
    }); 
}); 
+0

hmmm,所以即使有更新的代码,它也不会动画。 – loriensleafs 2012-07-17 18:19:06

+1

@loriensleafs这不是问题,是吗? – Yoshi 2012-07-17 18:22:18

+0

@loriensleafs:尝试对“高度”和“顶部”使用不同的值。 – 2012-07-17 18:23:58

1

我收到了你的代码的工作,它位于:http://jsfiddle.net/VEXfJ/7/

逐步执行代码的好方法是添加警示语句。

$(function() 
{ 
    $("#fullscreen_launch").click(function() 
    { 
     alert("Clicked"); 

     $("#fullscreen").animate(
     { 
      top: 0, 
      height: 'toggle' 
     }, 5000, function() 
     { 

      alert("animate complete"); 

      setTimeout(function() 
      { 
       alert("timeout"); 
       $('#fullscreen').load('http://www.klossal.com/portfolio/space_fullscreen.html'); 
      }, 2000); 
     }); 
    }); 
});​ 
+1

'alert'不是最好的调试工具,'console'好多了。 – Yoshi 2012-07-17 18:20:07

+0

我从来没有说过这是'最好的',只是这是一个很好的方法来通过代码。就个人而言,我更喜欢向控制台发出警报。只是一个偏好问题。 – 2012-07-17 18:22:26

+0

由于警报的阻塞性质,它确实不适合在知道事件发生时很重要的情况下调试代码。 – Yoshi 2012-07-17 18:31:16