Javascript jQuery-等待淡入淡出完成的正确方法

Javascript jQuery-等待淡入淡出完成的正确方法,javascript,jquery,timeout,fade,Javascript,Jquery,Timeout,Fade,我有一个问题,我想淡出一个图像,然后将图像移动到一个空的容器中。然而,图像并没有褪色,相反,它似乎是被移动所覆盖,使用html() 下面是我想做的。有没有办法让我强制移动等待淡出完成 // Fade out image to be replaced mosaic_box.find('img').fadeTo(7000, 0.0) // Then move the image $('.mosaic_list li:empty', obj) .random(1) .html(mos

我有一个问题,我想淡出一个图像,然后将图像移动到一个空的
  • 容器中。然而,图像并没有褪色,相反,它似乎是被移动所覆盖,使用
    html()

    下面是我想做的。有没有办法让我强制移动等待淡出完成

    // Fade out image to be replaced
    mosaic_box.find('img').fadeTo(7000, 0.0)
    
    // Then move the image
    $('.mosaic_list li:empty', obj)
        .random(1)
        .html(mosaic_box.find('img')
            .addClass('mosaic_last_img')
        );
    

    将代码移动到函数中,并将该函数传递给fadeTo的回调参数

    function callback(){
                        // Then move the image
                        $('.mosaic_list li:empty', obj)
                        .random(1)
                        .html(mosaic_box.find('img')
                            .addClass('mosaic_last_img')
                            );
    }
    
     // Fade out image to be replaced
     mosaic_box.find('img').fadeTo(7000, 0.0, callback)
    

    在fadeTo函数的回调中执行移动:

    mosaic_box.find('img').fadeTo(7000, 0.0, function() { 
        $('.mosaic_list li:empty', obj)
         .random(1)
         .html(mosaic_box.find('img').addClass('mosaic_last_img'));
    });
    
    ,与大多数与动画相关的方法一样,接受可选的回调参数,可以使用该参数指定动画完成后要运行的函数

    要修改代码(未测试),请执行以下操作:

    fadeTo()有一个可选的回调参数

    .fadeTo(持续时间、不透明度[、回调])

    回调-动画完成后调用的函数

    最简单的方法是使用匿名函数-

    mosaic_box.find('img').fadeTo(7000, 0.0, function(){
        $('.mosaic_list li:empty', obj)
            .random(1)
            .html(mosaic_box.find('img')
            .addClass('mosaic_last_img');
        );
    });
    

    Cheers@Richard D-唯一的问题是我现在淡出图像,将其移动到空的
  • ,但我的脚本不再淡出新图像。我意识到这可能超出了我最初问题的范围,但是根据你对我的代码的修改,你能想到什么可能会导致这种情况吗?啊,已经解决了-我需要在同一个匿名函数中包装我的下一个代码块,执行fadeIn。是的,淡出后想要发生的一切都必须发生在回调内部。
    mosaic_box.find('img').fadeTo(7000, 0.0, function(){
        $('.mosaic_list li:empty', obj)
            .random(1)
            .html(mosaic_box.find('img')
            .addClass('mosaic_last_img');
        );
    });