jquery fadeIn和fadeOut不工作

时间:2013-03-09 03:14:15

标签: jquery

所以我有3张图片,当用户点击它时,它会变为另一张图像。但我想添加一个jQuery fadeOutfadeIn来提供切换过程的过渡效果。这就是我想出来的但它不起作用,任何想法?

$(".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);       
        }
    });
});

1 个答案:

答案 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);
    });
});