javascript延迟无效

时间:2016-06-28 10:55:32

标签: javascript jquery

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



$('#lock').prepend('<tr><td>hello</td><td>cool</td><td>dad</td></tr>');
&#13;
&#13;
&#13;

我正在使用以下代码

$("#lock tr").css('background-color','yellow').delay(4000).css('background-color','fade');

问题延迟无法正常工作

1 个答案:

答案 0 :(得分:5)

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

#lock {
    background-color: yellow;
    transition: background-color 0.3s;
}    
#lock.red {
    background-color: red;
}

现在加载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.

修改

如果您想知道代码无效的原因,请查看this answer。 delay函数似乎只对队列中的项目(如动画)起作用。对于其他任何事情,请使用我的第一个JS解决方案中给出的常规旧计时器:

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

setTimeout(function () {
    $table.css("background-color", "red");
}, 4000);

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

祝你好运。