那有什么问题?
$('body').append("<div class='message success'>Upload successful!</div>");
$('.message').delay(2000).remove();
我想在我的html文档中附加成功消息,但仅限2秒。 之后,应该再次删除div。
我在这里做错了什么?
问候
答案 0 :(得分:94)
直接使用setTimeout()
(.delay()
内部使用)在这里更简单,因为.remove()
不是排队函数,总体上应该如下所示:
$('body').append("<div class='message success'>Upload successful!</div>");
setTimeout(function() {
$('.message').remove();
}, 2000);
.delay()
用于动画(或任何命名的)队列,要使用它,您必须执行以下操作:
$("<div class='message success'>Upload successful!</div>").appendTo('body')
.delay(2000).queue(function() { $(this).remove(); });
Which works, here ...但是为了链接IMO,这只是过度杀伤和非常低效。通常你也必须调用dequeue或下一个函数,但是因为你要删除元素......
答案 1 :(得分:6)
我认为正确的方法是使用jQuery队列方法:
$("<div class='message success'>Upload successful!</div>")
.appendTo('body')
.delay(2000)
.queue(function() {
$(this).remove();
});
答案 2 :(得分:2)
也许我正在使用过时的jQuery,但其他答案中建议的方法似乎都不适合我。根据{{3}},延迟是针对动画效果的。
然而,使用setTimeout()
对我来说效果很好:
$('body').append("<div class='message success'>Upload successful!</div>");
setTimeout(function(){
$(".message").remove();
}, 2000);
答案 3 :(得分:0)
只是为了踢,你可以使用延迟执行以下操作:
$('body').append("<div class='message success'>Upload successful!</div>");
$('.message').show('fast').delay(2000).hide('fast')
$('.message').remove();