jQuery:附加()对象,删除()它与延迟()

那有什么问题?

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

我想追加一个成功的消息到我的HTML文件,但只有2秒。 之后,div应该再次被删除。

我在这里做错了什么?

问候

直接使用setTimeout() (内部使用.delay() )在这里更简单,因为.remove()不是排队函数,总的来说应该是这样的:

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

你可以在这里试试 。

.delay()是为animation(或任何指定的)队列,要使用它,你必须做一些事情:

 $("<div class='message success'>Upload successful!</div>").appendTo('body') .delay(2000).queue(function() { $(this).remove(); }); 

哪个在这里有用,但是为了链接国际海事组织,这只是矫枉过正,效率极低。 通常情况下,您还必须调用出列或下一个函数,但是由于您正在移除元素,因此…

我认为正确的做法是使用jQuery队列方法:

  $("<div class='message success'>Upload successful!</div>") .appendTo('body') .delay(2000) .queue(function() { $(this).remove(); }); 

也许我正在使用过时的jQuery,但是其他答案中build议的方法似乎都不适用于我。 根据http://api.jquery.com/delay/ ,延迟是针对animation效果的。

使用setTimeout()但是,我很好地工作:

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

而只是踢,你可以做以下,使用延迟:

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