jQuery语句中没有延迟

jQuery语句中没有延迟,jquery,Jquery,我希望一些角色逐渐出现,所以我构建了这个脚本。然而,延迟似乎根本没有执行——我试图将其设置为数千次,结果没有任何变化。我错过了什么 $(document).ready(function () { var i, d = [500, 300, 600, 1000], t = "String"; $("body") .delay(flashDuration[0]) .animate({ backgro

我希望一些角色逐渐出现,所以我构建了这个脚本。然而,延迟似乎根本没有执行——我试图将其设置为数千次,结果没有任何变化。我错过了什么

$(document).ready(function () {

    var 
        i,
        d = [500, 300, 600, 1000],
        t = "String";

    $("body")
        .delay(flashDuration[0])
        .animate({ backgroundColor: "#888888" }, d[1])
        .animate({ backgroundColor: "#222222" }, d[2])
        .animate({ backgroundColor: "#F8ECC2" }, d[3], null, function () {
            for (i = 0; i < t.length; i++)
                $("<span>" + t.substr(i, 1) + "</span>")
                    .addClass("hidden")
                    .delay(i * 2000) /* this delay doesn't execute */
                    .addClass("visible")
                    .appendTo("#floatingName");

        });
});
$(文档).ready(函数(){
变量
我
d=[5003006001000],
t=“字符串”;
$(“正文”)
.延迟(flashDuration[0])
.animate({backgroundColor:#8888888},d[1])
.animate({backgroundColor:#22222},d[2])
.animate({backgroundColor:#F8ECC2“},d[3],null,函数(){
对于(i=0;i
请不要因为d是持续时间而不是头衔而咬我的头。我之所以缩写这些名字,是因为每个程序员都喜欢晦涩难懂、不自解释的短变量名。对吗?说真的,我尽量避免包装


另外,我尝试在JSFIDLE上发布,但该示例甚至没有闪烁屏幕,更不用说正确执行延迟了。

animate()的第二个参数是动画应该动画结束的时间。不是动画开始之前的时间。在链中的每个animate()之间都应该加上delay()

$("body")
    .delay(flashDuration[0])
    .animate({ backgroundColor: "#888888" }).delay(d[1])
    .animate({ backgroundColor: "#222222" }).delay(d[2])
等等

您还可以使用animate()的队列选项使动画堆叠起来,而不是紧跟在一起运行

这里都解释了


编辑

延迟不会延迟脚本的执行,它只会延迟动画队列中的下一项。所以它不能用这种方式。您应该改用setTimeout

.delay()方法最适合在排队的jQuery之间进行延迟 影响。因为它是有限的,例如,它不能提供一种 取消延迟-.delay()不是JavaScript的本机 setTimeout函数,可能更适合某些用途 案例


据我所知,jQuery仍然不支持本地的彩色动画

以下是您在JSFIDLE上的代码版本,其中包含彩色动画扩展:


不,那部分是对的。我的问题是显示跨距时的延迟,而不是闪烁(按照我的要求发生)。我希望跨距中的字母在一段时间后被重新分类为可见,此时此刻就发生了。哦,对不起,我只是假设您不希望这样,因为您调用了变量d(延迟)。检查我的最新答案^哈哈,我遇到了问题。变量名实际上是闪烁时和显示字母前的延迟。然后我意识到我可以在回调函数中插入所有这些,但保留了名称。对不起,误导了你。然而,在我看来,拖延是正确的选择。我想更改类名,等待一段时间,然后再次更改类名(实际上是添加它)。我看不到代码中有任何差异。然而,我看到了不同的行为。我疯了吗?!(是的,我使用的是jQueryUI,我已经忘记了。关于延迟的主要问题仍然存在。)您在JSFIDLE上选择了mootools作为框架。我不太喜欢JSFIDLE,但我想这是一个重要的区别。是的,就像@MrAzulay说的,您没有选择jQuery。