jQuery:append()对象,remove()延迟()

时间:2010-09-07 03:47:05

标签: jquery append delay

那有什么问题?

$('body').append("<div class='message success'>Upload successful!</div>");
$('.message').delay(2000).remove();

我想在我的html文档中附加成功消息,但仅限2秒。 之后,应该再次删除div。

我在这里做错了什么?

问候

4 个答案:

答案 0 :(得分:94)

直接使用setTimeout().delay()内部使用)在这里更简单,因为.remove()不是排队函数,总体上应该如下所示:

$('body').append("<div class='message success'>Upload successful!</div>");
setTimeout(function() {
  $('.message').remove();
}, 2000);

You can give it a try here

.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();