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

58

我想在5秒内显示一个设置为display: none;的div。

$('#div').show().delay(5000).hide();

但它不起作用,它直接跳到 hide()。

你们能帮我吗?

4个回答

126

可以这样做:

$('#div').show(0).delay(5000).hide(0);
通过向 .show().hide() 传递数字,jQuery 将这些方法放入其内部的 fx 队列 中(即使数字为零)。由于 .delay() 只在队列内起作用,因此您需要使用这个小技巧。
示例:http://jsfiddle.net/zceKN/

4
+1 很妙,比我粗暴地将其添加到队列中的方法好多了。 - gilly3
那个 hide(0) 对于动画也起作用。我甚至不需要延迟 .animate({opacity: 0}, 400).hide(0) - Hebe

11

你需要使用.queue(),因为.hide()默认情况下不会排队。

$("#div").show().delay(5000).queue(function (next) {
    $(this).hide();
    next();
});

3

2
$('#div').show();
setTimeout(function(){$('#div').hide();}, 5000);

.delay()仅适用于动画


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接