回调.delay()

时间:2011-10-27 11:20:45

标签: jquery

我有一个$image.fadeIn.fadeOut,然后.remove完成后.fadeOut。这是我的代码:

$image
   .fadeIn()
   .fadeOut(function() {
      $(this).remove();
   });

我想在.delay之后添加.fadeOut.remove仅在$image完成后添加.delay。我试过了:

$image
   .fadeIn()
   .fadeOut()
   .delay(1000, function() {
      $(this).remove();
   });

问题是.delay doest 接受回调函数。我如何.remove将图片作为.delay的回调?

3 个答案:

答案 0 :(得分:54)

您可以使用queue()方法安排自己的函数在delay()完成后运行:

$image.fadeIn()
      .fadeOut()
      .delay(1000)
      .queue(function(next) {
          $(this).remove();
          next();
      });

答案 1 :(得分:5)

您可以随时执行以下操作:

$image
    .fadeIn()
    .fadeOut(function() {
        var self = this; // Not sure if setTimeout
                         // saves the pointer to this
        setTimeout(function() {
            $(self).remove();
        }, 1000)
    });

答案 2 :(得分:-1)

据我所知,您可以在延迟通话后绑定上的电话,如下所示:

$image
   .fadeIn()
   .fadeOut()
   .delay(1000)
   .remove()
});

例如来自the documentation的以下示例:

$('#foo').slideUp(300).delay(800).fadeIn(400);

排队物品执行的气质也在那里拼写:

  

... .delay()方法允许我们延迟   在队列中执行跟随它的函数。它可以使用   使用标准效果队列或使用自定义队列。只要   队列中的后续事件被延迟;例如,这不会   延迟不使用的.show()或.hide()的无参数形式   效果排队。

阅读文档以获取有关哪个队列延迟的更多信息,如果您遇到可能需要指定的默认fx队列的麻烦。