javascript延迟无效

Mid*_*esh 4 javascript jquery

这是我的表行我的要求是第一次显示黄色的行背景颜色4秒后颜色变淡我正在使用下面的代码

$('#lock').prepend('<tr><td>hello</td><td>cool</td><td>dad</td></tr>');
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码

$("#lock tr").css('background-color','yellow').delay(4000).css('background-color','fade');
Run Code Online (Sandbox Code Playgroud)

问题延迟无效

Jas*_*onK 5

让CSS渲染背景颜色过渡(比JS更快):

#lock {
    background-color: yellow;
    transition: background-color 0.3s;
}    
#lock.red {
    background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

现在加载DOM后,在关闭<body>标记之前添加以下JavaScript :

// JS solution
setTimeout(function() {
    var element = document.getElementById('lock');
    element.classList.add('red');
}, 4000);

// jQuery solution
$('#lock').delay(4000).addClass('red'); // no good, check the edit.
Run Code Online (Sandbox Code Playgroud)

编辑

如果您想知道代码无效的原因,请查看答案.该delay函数似乎只适用于队列中的项目(例如动画).除此之外,使用我的第一个JS解决方案中给出的常规旧计时器:

var $table = $("#lock");
$table.css("background-color", "yellow");

setTimeout(function () {
    $table.css("background-color", "red");
}, 4000);
Run Code Online (Sandbox Code Playgroud)

如果你还想要淡入淡出过渡,你仍然需要使用一些CSS.

祝好运.