如何立即完成正在进行的动画?

时间:2014-03-11 11:39:03

标签: jquery

用户通过mouseenter启动动画。但当他鼠标进入其他元素开始下一个动画时,我想立即完成上一个。您可以在www.checkitout.over.cz/appio网站上看到动画。谢谢大家。

$(".col3-1 > div").mouseenter(function(){

        $(this).find("div").find("span").hide();
        $(this).find("div").find("div").hide();
        $(this).find("div").css("height", "1.5em");
        $(this).find("div").find("div").css("top", "0px");
        $(this).find("div").find("div").fadeIn();

            $(this).find("div").find("div").animate({
                "left": "78px"
            }, 200);

    });


    $(".col3-1 > div").mouseleave(function(){

        $(this).find("div").find("span").show();
        $(this).find("div").css("height", "2.5em");
        $(this).find("div").find("div").css("top", "7px");
        $(this).find("div").find("div").css("left", "10px");

    });

3 个答案:

答案 0 :(得分:1)

您应该使用finish()方法:(jq 1.9 +)

$('.col3-1 > div:animated').finish();

对于较旧的jq版本,请使用stop(true, true)

$('.col3-1 > div:animated').stop(true, true);

答案 1 :(得分:0)

jquery stop()就是您所需要的。

stop()停止匹配元素上当前正在运行的动画。

你可以传递额外的参数来停止,

stop(true,true) 

清除队列并立即完成当前动画设置为true

为什么你有两个find()。用空格分隔它们应该有效

$(this).find("div span")..

答案 2 :(得分:0)

使用stop()方法

$(this).find("div").find("div").stop().animate({
            "left": "78px"
        }, 200);
  );