jQuery 和 setTimeout

2023-12-07

我有以下代码:

            jQuery(document).ready(function()
            {
setTimeout($('#loading').fadeIn('slow'), 9999);
            });

它应该在 9999 毫秒后慢慢淡入加载元素,但它却立即淡入……为什么?

任何人都可以帮忙。谢谢


为了做你想做的事,你必须将 jQuery 的东西包装在一个匿名函数中:

setTimeout(function () {
    $('#loading').fadeIn('slow');
}, 9999);

The setTimeout函数(和setInterval也)必须被告知延迟后该做什么。只有三种方法告诉它要做什么:

  1. 带有必须的 JavaScript 字符串eval:

    setTimeout('$("#loading").fadeIn("slow")', 9999);
    

    因为这使用了eval,并且可能会变得非常难看,不推荐。但效果很好。

  2. 有一个功能参考:

    var test = function () {
        $('#loading').fadeIn('slow');
    };
    
    setTimeout(test, 9999);
    

    请注意,我没有这样做setTimeout(test(), 9999)。我只是给了它函数的名称。

  3. 使用动态构造的匿名函数,这就是我在上面的第一个代码块中所做的。

如果你尝试做类似的事情setTimeout(test(), 9999),那么浏览器将first执行test(),然后给出返回值 to setTimeout。所以在你的尝试中...

setTimeout($('#loading').fadeIn('slow'), 9999);

...浏览器正在执行 jQuery 的东西,淡入#loading元素,然后给予任何东西fadeIn返回到setTimeout。碰巧的是,fadeIn函数返回一个 jQuery 对象。但是setTimeout不知道如何处理对象,因此在9999毫秒的延迟之后什么也不会发生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery 和 setTimeout 的相关文章

随机推荐