fadeOut结束后正在执行JQuery fadeOut回调函数

时间:2013-07-04 00:34:01

标签: javascript jquery jquery-ui

点击一个按钮,我试图淡出图像,当它渐渐淡出时,我正在改变图像的来源。然后我使用fadeIn来显示新图像。这在Chrome和Firefox中运行良好。但是,在ie10中,图像淡出,淡入,然后出现新图像。我无法找到它的解决方案。我试图延长fadeOut,fadeIn的持续时间。我尝试过使用setTimeout函数。我尝试过使用promise()。done()函数。我已经尝试过使用Jquery UI的hide / show w / slide效果,并且出现了同样的问题。似乎没有什么工作。我真的很感激任何帮助。感谢

me.$el.find('#printable-detail-static-imageRight').fadeOut('fast', function(){
                            me.$el.find('#printable-detail-static-imageRight').attr('src', me.options.samplePrints[k+i]);
                            me.disableNext();
                        });

                        me.$el.find('#printable-detail-static-imageRight').fadeIn('slow')

3 个答案:

答案 0 :(得分:1)

我很确定你需要将.fadeIn方法放在回调函数中,以便它受回调函数的影响。实际上,我会在.attr方法中添加另一个回调函数,以确保它仅在src更改后才会消失。

Here's我写的一个jsFiddle来说明我的意思。

答案 1 :(得分:1)

我在Mac上,但这段代码是否适用于ie? jsFiddle

html的

<div id="content">Promises</div>
<button id="click">start animation</button>

的.js

$("#click").on("click", function () {
    $('#content').fadeOut({
        duration: 1000,
        // run when the animation is complete
        complete: function () {
            $("#content").append($("<div>").addClass("fakeimg"));
        },
        // run when the animation is complete + 
        //it's promise is resolved
        done: function () {
            $('#content').fadeIn(1000);
        }
    });
});

答案 2 :(得分:0)

这有效:

 me.$el.find('#printable-detail-static-imageRight').animate({
                        opacity:0
                    }, {
                        duration: 700,
                        step: function(now, fx){
                            if(fx.pos > 0.40 && fx.pos < 0.5){
                                $(this).attr('src', me.options.samplePrints[k+i]);
                                me.disableNext();
                            }
                            if (fx.pos ==1) {
                                $(this).animate({
                                    opacity:1
                                }, 200);
                            }
                        }
                    });