Javascript 在淡出结束后执行JQuery淡出回调函数
点击一个按钮,我试图淡出一个图像,当它淡出时,我正在改变图像的来源。然后我用fadeIn来显示新的图像。这在Chrome和firefox中运行良好。然而,在ie10中,图像淡出,淡入,然后新图像出现。我找不到解决办法。我试着延长淡出的时间,法丹。我试过使用setTimeout函数。我尝试过使用promise().done()函数。我尝试过使用jQueryUI的隐藏/显示/幻灯片效果,同样的问题也出现了。似乎什么都没用。我真的很感激任何帮助。谢谢Javascript 在淡出结束后执行JQuery淡出回调函数,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,点击一个按钮,我试图淡出一个图像,当它淡出时,我正在改变图像的来源。然后我用fadeIn来显示新的图像。这在Chrome和firefox中运行良好。然而,在ie10中,图像淡出,淡入,然后新图像出现。我找不到解决办法。我试着延长淡出的时间,法丹。我试过使用setTimeout函数。我尝试过使用promise().done()函数。我尝试过使用jQueryUI的隐藏/显示/幻灯片效果,同样的问题也出现了。似乎什么都没用。我真的很感激任何帮助。谢谢 me.$el.find('#printable-d
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')
我很确定,您需要将
.fadeIn
方法放在回调函数中,以使其受回调函数的影响。事实上,我会在.attr
方法中添加另一个回调函数,以确保只有在src
更改后,它才会淡入
我写了一个JSFIDLE来说明我的意思。我在mac上,但这段代码在ie中有效吗 .html
承诺
启动动画
.js
$(“单击”)。在(“单击”上,函数(){
$(“#内容”).fadeOut({
持续时间:1000,
//动画完成后运行
完成:函数(){
$(“#content”).append($(“”).addClass(“fakeimg”);
},
//动画完成后运行+
//它的承诺已经解决了
完成:函数(){
$('内容').fadeIn(1000);
}
});
});
这项工作:
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);
}
}
});
me.$el.find(“#可打印细节静态图像右”)。动画({
不透明度:0
}, {
持续时间:700,
步骤:函数(现在,fx){
如果(fx.pos>0.40和&fx.pos<0.5){
$(this.attr('src',me.options.samplePrints[k+i]);
me.disableNext();
}
如果(fx.pos==1){
$(此)。设置动画({
不透明度:1
}, 200);
}
}
});
这是因为图像未加载吗?尝试在页面中使用一个img标记来显示第二个图像,只是为了测试它。另外,您不需要在淡出功能中使用me.$el.find(“#可打印细节静态图像右”)
。使用$(此)
@Turtleweezard…此代码适用于其他浏览器,但适用于ie。ie仍会淡出、淡入,然后图像会发生更改。在chrome和firefox上,它工作得非常好。我真希望我对jQuery有足够的了解来解决这个问题。。。“该死的Internet Explorer!!!”但当您试图更改图像的src属性时,它会起作用吗?在这种情况下,我赞成这种解决方案+1它淡出淡入,但画面没有改变。@rusln这段代码在ie中工作,但它给了我与以前相同的问题。在ie中,当前图片淡出,它与当前图片一起淡入,持续几秒钟,然后图像发生变化
$("#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);
}
});
});
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);
}
}
});