所以我有3张图片,当用户点击它时,它会变为另一张图像。但我想添加一个jQuery fadeOut
和fadeIn
来提供切换过程的过渡效果。这就是我想出来的但它不起作用,任何想法?
$(".chosen").click(function() {
var src = $(this).attr("src");
if (src == "blank.png") (function() {
$(this).fadeOut(400);
{
$(this).attr("src", "ex.png").fadeIn(400);
}
});
else if (src == "ex.png") (function() {
$(this).fadeOut(400);
{
$(this).attr("src", "oh.png").fadeIn(400);
}
});
else (function() {
{
$(this).fadeOut(400);
$(this).attr("src", "blank.png").fadeIn(400);
}
});
});
答案 0 :(得分:1)
您应该更改图像的来源,并在fadeOut
动画完成后转换回来。
fadeOut文档显示动画完成渲染时回调的complete
参数。
$(this).fadeOut(400, function(){/*code to be executed when animation finishes*/});
在您的示例中,您可以执行以下操作:
$(this).fadeOut(400, function(){
$(this).attr("src", "ex.png").fadeIn(400);
});
您可以重构代码以减少冗余代码,如下所示:
$(".chosen").click(function() {
var $this = $(this); // avoid calling $ multiple times
$this.fadeOut(400, function() {
var src = $this.attr("src");
var newSrc = "";
// this if/else block could be refactored further
if (src == "blank.png") {
newSrc = "ex.png";
}
else if (src == "ex.png") {
newSrc = "oh.png";
}
else { // if src == "oh.png"
newSrc = "blank.png";
}
$this.attr("src", newSrc).fadeIn(400);
});
});