Jquery $('#div').show().delay(5000).hide(); 不起作用

Dex*_*url 55 javascript css jquery

我试图显示一个设置display: none;为5秒的div

$('#div').show().delay(5000).hide();
Run Code Online (Sandbox Code Playgroud)

但它不起作用,它只是直接隐藏()

你们有人可以帮助我吗?

jAn*_*ndy 123

像这样做:

$('#div').show(0).delay(5000).hide(0);
Run Code Online (Sandbox Code Playgroud)

通过将数字传递给.show().hide(),jQuery将把这些方法带入其内部fx队列(即使数字为零).由于.delay()只能在队列中运行,因此您需要一些小的解决方法.

示例:http://jsfiddle.net/zceKN/

  • +1这很光滑.比我的蛮力方法更好地将它添加到队列中. (4认同)

gil*_*ly3 8

您需要使用.queue()因为.hide()默认情况下不排队.

$("#div").show().delay(5000).queue(function (next) {
    $(this).hide();
    next();
});
Run Code Online (Sandbox Code Playgroud)