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

mat*_*att 39 jquery append delay

那有什么不对?

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

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

我在这做错了什么?

问候

Nic*_*ver 97

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

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

你可以在这里尝试一下.

.delay() 是用于动画(或任何命名的)队列,要使用它,你必须做以下事情:

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

哪个有效,这里 ......但是为了链接IMO ,这只是矫枉过正而且非常低效.通常你也必须调用dequeue或下一个函数,但是因为你要删除元素...


Vik*_*kov 8

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

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