为什么JQuery要求我明确地将排队的图像淡出?

时间:2015-07-20 13:42:03

标签: javascript jquery html css

这是JSfiddle

演示了一些简单JS函数的排队。

SwingWorker

请注意,单击该按钮时,body和div1颜色会按预期更改。但是,除非我取消注释Google图像淡入淡出的出列语句,否则图像不会消失。我很好奇为什么我不必明确地将前两个操作出列以使它们生效,但是对于图像淡入淡出,我必须调用dequeue方法。

1 个答案:

答案 0 :(得分:1)

在前两种情况下,您添加到队列的功能执行的操作不会执行与动画队列有关的任何操作。改变颜色的回调做了他们立即做的事情,然后他们就完成了。

使用您用于图片的回调,然而,您在回调中请求的操作涉及动画队列。因为你传递的回调不像一个好的动画回调那样调用.dequeue(),所以.fadeOut()操作不会被调用。

如果您在回调中添加.dequeue() ,那么它可以正常运行:

 image.queue(function(){
     $(this).fadeOut(3000).dequeue();
 });

.fadeOut()的调用说,"将淡出操作添加到队列"。然后调用.dequeue(),你的回调声明自己完成,所以动画可以继续下一步:淡出。

您还可以编写代码以利用jQuery传递给自定义动画函数的回调:

 image.queue(function(next) {
     $(this).fadeOut(3000);
     next();
 });