我有以下代码:
jQuery(document).ready(function()
{
setTimeout($('#loading').fadeIn('slow'), 9999);
});
它应该在 9999 毫秒后慢慢淡入加载元素,但它却立即淡入……为什么?
任何人都可以帮忙。谢谢
为了做你想做的事,你必须将 jQuery 的东西包装在一个匿名函数中:
setTimeout(function () {
$('#loading').fadeIn('slow');
}, 9999);
The setTimeout
函数(和setInterval
也)必须被告知延迟后该做什么。只有三种方法告诉它要做什么:
-
带有必须的 JavaScript 字符串eval
:
setTimeout('$("#loading").fadeIn("slow")', 9999);
因为这使用了eval
,并且可能会变得非常难看,不推荐。但效果很好。
-
有一个功能参考:
var test = function () {
$('#loading').fadeIn('slow');
};
setTimeout(test, 9999);
请注意,我没有这样做setTimeout(test(), 9999)
。我只是给了它函数的名称。
使用动态构造的匿名函数,这就是我在上面的第一个代码块中所做的。
如果你尝试做类似的事情setTimeout(test(), 9999)
,那么浏览器将first执行test()
,然后给出返回值 to setTimeout
。所以在你的尝试中...
setTimeout($('#loading').fadeIn('slow'), 9999);
...浏览器正在执行 jQuery 的东西,淡入#loading
元素,然后给予任何东西fadeIn
返回到setTimeout
。碰巧的是,fadeIn
函数返回一个 jQuery 对象。但是setTimeout不知道如何处理对象,因此在9999毫秒的延迟之后什么也不会发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)